Day20

01 File概述
02 File对象功能-创建和删除
03 File对象功能-判断
04 File对象功能-获取
05 File对象功能-文件列表1
06 File对象功能-文件列表2
07 列出目录下所有内容-递归
08 列出目录下所有内容-带层次
09 删除带内容的目录

01 File概述

File类
用来将文件或者文件夹封装成对象
方便对文件与文件夹进行操作
File对象可以作为参数传递给流的构造函数
了解File类中的常用方法。

public static final String separator:与系统有关的默认名称分隔符,它被表示为一个字符串。
 import java.io.*;
public class FileDemo
{
public static void main(String[] args)
{
consMethod(); }
//创建File对象
public static void consMethod()
{
//将q.txt封装成File对象。可以将已有的和未出现的文件或者文件夹封装成对象。
File f1=new File("q.txt"); File f2=new File("d:\\abc","w.txt"); File d=new File("d:\\abc");
File f3=new File(d,"e.txt"); sop("f1:"+f1);
sop("f2:"+f2);
sop("f3:"+f3); //File.separator是跨平台的。
File f4=new File("d:"+File.separator+"abc"+File.separator+"r.txt"); }
public static void sop(Object obj)
{
System.out.println(obj);
}
}

02 File对象功能-创建和删除

boolean createNewFile():当且仅当不存在此指定名称的文件时,创建一个新的空文件。
boolean delete():删除此抽象路径名表示的文件或目录。
void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

 /*
File类常见方法:
1.创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false
和输出流不一样,输出流对象建立文件,如果文件已经存在,则会覆盖。
2.删除
boolean delete():删除失败返回false
void deleteOnExit:在程序退出时删除指定文件。
*/
import java.io.*;
public class FileDemo2
{
public static void main(String[] args) throws IOException
{
method(); } public static void method()throws IOException
{
File f=new File("file.txt");
sop("create:"+f.createNewFile()); }
public static void sop(Object obj)
{
System.out.println(obj); }
}

03 File对象功能-判断

创建文件夹:
boolean mkdir():创建一级文件夹
boolean mkdirs():创建多级文件夹
判断:
boolean exists():文件是否存在。
boolean canExecute():测试文件是否可执行
isFile():是否是文件。
isDirectory():是否是目录
isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
isAbsolute():测试此抽象路径名是否为绝对路径名。

04 File对象功能-获取

getName():返回文件或者目录的名称。
getPath():将此抽象路径名转换为一个路径字符串。
getParent():返回父目录的路径字符串;如果此路径名没有指定父目录,则返回null。

getAbsolutePath():返回绝对路径。
long lastModified():返回文件最后一次被修改的时间,
long length():返回文件的长度。

public boolean renameTo(File dest):重命名此抽象路径表示的文件

 /*
获取信息:
getName();
getPath();
getParent(); getAbsolutePath();
long lastModofied();
long length(); removeTo(): */
import java.io.*;
public class FileDemo2
{
public static void main(String[] args) throws IOException
{
method_5(); }
public static void method_5()
{
File f1=new File("d:\\abc\\a.txt");
File f2=new File("e:\\hahaha.txt");
sop("rename:"+f1.renameTo(f2)); } public static void method_4()
{
File f=new File("file.txt"); sop("path:"+f.getPath());
sop("abspath:"+f.getAbsolutePath());
//该方法返回的是绝对路径中的父目录
//如果获取的是相对路径,返回null
//如果相对路径中有上一层目录,那么该目录就是返回结果
sop("parent:"+f.getParent()); }
public static void method()throws IOException
{
File f=new File("file.txt");
sop("create:"+f.createNewFile()); }
public static void sop(Object obj)
{
System.out.println(obj); }
}

05 File对象功能-文件列表1

static File[] listRoots():列出可用的文件系统根。
String[] list():返回一个字符串数组,这些字符串指定路径名表示的目录中的文件和目录。

 import java.io.*;
public class FileDemo3
{
public static void main(String[] args)
{ listRootDemo();
listDemo();
}
//列出指定路径下所有的文件
public static void listDemo()
{
File f=new File("d:\\");
//当调用list的对象是一个文件时,会发生空指针异常,因为返回的数组为空
String[] string=f.list();
for(String s:string)
{
System.out.println(s);
}
}
//列出计算机中中所有可用的盘符
public static void listRootDemo()
{
File[] files =File.listRoots();
for(File f:files)
{
System.out.println(f);
}
}
}

06 File对象功能-文件列表2

String list(FilenameFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

其中,FilenameFilter是一个接口,里面只有一个抽象方法accept

 import java.io.*;
public class FileDemo3
{
public static void main(String[] args)
{
listDemo_2();
listDemo_3(); }
public static void listDemo_3()
{
//list()和listFiles()的区别
//list()返回的是字符串数组
//listFiles()返回的是File数组
File dir=new File("c:\\");
File[] files=dir.listFiles();
for(File f:files)
{
System.out.println(f.getName()+"::"+f.length());
}
}
//带参数的list方法,返回满足指定过滤器的文件和目录
public static void listDemo_2()
{
File dir=new File("d:\\abc");
//使用匿名内部类来实现FilenameFilter接口的抽象方法
String[] arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".bmp");
}
});
for(String name:arr)
{
System.out.println(name);
} }
}

07 列出目录下所有内容-递归

列出指定目录下的文件或者文件夹,包含子目录的内容,
也就是列出指定目录下的所有内容。

因为目录中还有目录,只要使用同一个列出目录功能的方法完成即可。
在列出的过程中出现的还是目录的话,就再次调用本方法。
这种编程手法,叫做递归。

 /*

 递归要注意:
1.递归条件
2.递归次数:避免内存溢出
*/
import java.io.*;
public class FileDemo_4
{
public static void main(String[] args)
{
File dir=new File("d:\\");
//showDir(dir);
//求6的二进制
toBin(6);
//求1到100的和
System.out.println("求1到100的和为:"+getSum(100)); }
//递归小例子,十进制变二进制
public static void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
} }
//递归小例子2,求和
//注意,递归次数过多,可能造成内存溢出
public static int getSum(int n)
{
if(n==1)
return 1;
return n+getSum(n-1);
}
//显示目录
public static void showDir(File dir)
{
System.out.println(dir);
File[] files =dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}

08 列出目录下所有内容-带层次

上一小节中中递归显示的目录有点乱,怎么打印出有层次的目录呢?

 //显示出带有层次的目录
import java.io.*;
public class FileDemo_5
{
public static void main(String[] args)
{
File f=new File("D:\\phpnow");
showDir(f,0); }
public static String getLevel(int level)
{
StringBuilder sb=new StringBuilder();
for(int x=0;x<level;x++)
{
sb.append(" ");
}
return sb.toString();
}
public static void showDir(File dir,int level)
{
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x].getName());
}
}
}

09 删除带内容的目录

删除一个带内容的目录

删除原理:
在Windows中,删除目录是从里往外删除的。
既然是从里往外删除,就需要用到递归。

 import java.io.*;
public class RemoveDir
{
public static void main(String[] args)
{
File f=new File("D:\\课堂练习");
removeDir(f); }
public static void removeDir(File dir)
{
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
if((!files[x].isHidden() )&& files[x].isDirectory())
{removeDir(files[x]);}
else
{System.out.println(files[x].toString()+"--"+files[x].delete());} }
System.out.println(dir+"::"+dir.delete());
}
}

IO流04--毕向东JAVA基础教程视频学习笔记的更多相关文章

  1. 多线程--毕向东java基础教程视频学习笔记

    目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安 ...

  2. IO流01--毕向东JAVA基础教程视频学习笔记

    提要 01 IO流(BufferedWriter)02 IO流(BufferedReader)03 IO流(通过缓冲区复制文本文件)04 IO流(readLine的原理)05 IO流(MyBuffer ...

  3. IO流03--毕向东JAVA基础教程视频学习笔记

    提要 16 读取转换流17 写入转换流18 流操作规律-119 流操作规律-220 改变标准输入输出设备21 异常的日志信息22 系统信息 16 读取转换流 字符流体系中的InputStreamRea ...

  4. 网络编程2--毕向东java基础教程视频学习笔记

    Day 23 08 Udp接收端09 Udp键盘录入数据方式10 Udp聊天11 TCP传输12 TCP传输213 TCP练习14 TCP复制文件 08 Udp接收端 需求:定义一个应用程序,用于接收 ...

  5. IO流05--毕向东JAVA基础教程视频学习笔记

    Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 ...

  6. IO流02--毕向东JAVA基础教程视频学习笔记

    提要 08 自定义装饰类09 LineNumberReader10 MyLineNumberReader11 字节流File读写操作12 拷贝图片13 字节流的缓冲区14 自定义字节流的缓冲区-rea ...

  7. 网络编程3--毕向东java基础教程视频学习笔记

    Day24 01 TCP上传图片02 客户端并发上传图片03 客户端并发登录04 浏览器客户端-自定义服务端05 浏览器客户端-Tomcat服务端 01 TCP上传图片 import java.net ...

  8. 网络编程1--毕向东java基础教程视频学习笔记

    目录: 01 网络编程概述1 02 网络编程概述2 03网络编程 网络模型 04网络编程 IP地址 05网络编程 TCP和UDP 06网络编程 Socket 07网络编程 UDP发送端 01 网络编程 ...

  9. 集合3--毕向东java基础教程视频学习笔记

    Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型 ...

随机推荐

  1. NoSQL数据库介绍

    NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...

  2. 如何优雅地使用 Windows 10 ?

    身为一个伪电脑Geek,就算不懂电脑,也要把那些更不懂电脑的人给唬住. 1.入门级别: 当然就是让别人从视觉上感觉你的电脑不一般啦 第一步:桌面要干净,干净到什么程度呢,要像这样 当别人第一眼看到你的 ...

  3. Scalaz(37)- Free :实践-DB Transaction free style

    我一直在不断的提示大家:FP就是Monadic Programming,是一种特殊的编程风格.在我们熟悉的数据库编程领域能不能实现FP风格呢?我们先设计一些示范例子来分析一下惯用的数据库编程过程: i ...

  4. SoapUI 使用笔记

    1. 构建项目 安装完成后 右键Project --> New SOAP Project 在弹出的 New SOAP Project框中输入名字 和 webservice服务地址(example ...

  5. opencart 后台导航菜单添加步骤

    1,找到在catalog\language\english\common\header.php // Text$_['text_affiliate'] = 'Affiliates';$_['text_ ...

  6. mysql本地可以访问 网络不能访问

    远程登陆数据库的时候出现了下面出错信息: ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx', 经过今天下午的 ...

  7. DDD开发框架ABP之本地化/多语言支持

    本地化(Localization)也就是多语言功能,借此用户能够选择他的母语或熟悉的语言来使用系统,这显然非常有利于软件系统推向国际化.一个应用程序的UI界面至少有一种语言,DDD开发框架ABP就提供 ...

  8. java集合-HashMap

    HashMap基于哈希表的 Map 接口的实现,以 key-value 的形式存在.在 HashMap 中,key-value 总是会当做一个整体来处理,系统会根据 hash 算法来来计算 key-v ...

  9. Intro.js 网站演示

    Intro.js 为您的网站和项目提供一步一步的.更好的介绍 使用简单 引入 js 和 css,然后在代码中加入步骤和介绍. 快速小巧 7 KB 的 JavaScript 和 3 KB CSS,就是全 ...

  10. ClockPicker – 时钟风格 Bootstrap 时间选择器

    ClockPicker 是国内前端开发者发布的一个时钟样式 Timepicker,可以用于 Bootstrap 和 jQuery.所有主流浏览器都支持,包括 IE9+,支持移动设备,能够在触摸屏设备很 ...