起头
public class FileDemo {
public static void main(String[] args) throws Exception {
//此处throws抛出异常在后面出现
1.演示创建目录
String path = "FileDemo";
File f = new File(path);
f.mkdir();//创建单级目录
System.out.println(f.getAbsoluteFile());//输出绝对路径
String path = "FileDemob\\c\\d";
File f = new File(path);
f.mkdirs();//创建多级目录
//????未成功 问题一
//解决:
String path = "FileDemo"+File.separator+"a"+File.separator+"b";
//使用分隔符可解决,Linux只支持正斜杠,反斜杠需要使用函数File.separator()
File f = new File(path);
f.mkdirs();//成功
2.创建文件
String path = "FileDemo"+File.separator+"a.txt";//使用了分隔符就可以创建在制定目录
File f = new File(path);
f.createNewFile();
此处需要抛出异常,io异常
3.判断File对象是文件还是目录
String path = "FileDemo"+File.separator+"a.txt";//使用了分隔符就可以创建在制定目录
File f = new File(path);
System.out.println(f.isDirectory());//是否是目录 out:false
System.out.println(f.isFile());//是否是文件 out:true
4.判断file存在与否
File f1 = new File("FileDemo"+File.separator+"a.txt");
System.out.println(f1.exists());//out:ture
5.关于文件的只读模式 、只写、读写 都在File类当中
6.父路径 f.getParent().sout
7.文件大小 f.length().sout
8.获取文件名 f.getName().sout
9.删除文件或目录
f.delete();
f.delateOnExit();在存在情况下删除-常用
删除目录的条件:
- 1 单级删除,不可多级删除;
- 2 必须目录为空才能删除
10.列举目录下的所有file实例
File f = new File("FileDemo");
File[] fs = f.listFiles();
//简写fs.st回车 .forEach
Arrays.stream(fs).forEach(System.out::println);//流式操作-打印FileDemo下的所有文件,是带绝对路径的
String[] fs = f.list();
Arrays.stream(fs).forEach(System.out::println);//只打印文件名 相当于调用了getName()
11.补充:文件过滤器FileFilter
- 用文件数组存储,从f中过滤出来符合MyFileFilter的文件
list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组
listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
//11.补充:文件过滤器FileFilter
File f = new File("FileDemo");
File[] fs = f.listFiles(new MyFileFilter());
- 使用拉姆达lambda表达式 好处:直接修改contains()中的字符串就可以修改需要过滤的对象
listFiles()需要一个参数 f1是参数名 自己起的
File[] fs = f.listFiles((f1) -> f1.getName().contains(".txt"));
Arrays.stream(fs).forEach(System.out::println);
- 使用方法引用
MyFile中accept是非静态的需要创建对象才能引用
MyFileFilter my = new MyFileFilter();
File[] fs = f.listFiles(my::accept);
Arrays.stream(fs).forEach(System.out::println);
12.补充二:列举逻辑驱动器的信息
File[] fs = File.listRoots();
//Arrays.stream(fs).forEach(System.out::println);
for(File f:fs){
System.out.println(f);
System.out.println(f.getTotalSpace());//获取基础驱动器的总大小
System.out.println(f.getFreeSpace());//获取剩余空间的大小
System.out.println(f.getUsableSpace());//获取可用空间的大小