File类简介
- java.io.File类:抽象代表文件和目录。
- 使用此类,相当于获取了系统的文件,可以对其进行操作.
- 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类
File初始化
1 File file = new File("//");
注:
参数添加对应的目录地址或者添加文件的地址 目录地址使用"/",或者""来分割
常用方法及实战
- 修改文件名称
实例:
1 File file = new File("/Users/8888/IdeaProjects/undertow/file/test.json"); 2 3 System.out.println(file); 4 5 file.renameTo(new File("/Users/8888/IdeaProjects/undertow/file/newName.json")); 6 7 System.out.println(file);
- 获取当前项目路径,并对其下操作
当前项目下,新建文件
实例:
1 try { 2 file = new File("test.txt"); 3 file.createNewFile(); 4 } catch (IOException e) { 5 e.printStackTrace(); 6 }
- File是否存在
实例:
1 // File是否存在 2 System.out.println("File是否存在:" + file.exists());
- File是否是目录
实例:
1 // File是否是目录 2 System.out.println("File是否是目录:" + file.isDirectory());
- File是否是文件
实例:
1 // File是否是文件 2 System.out.println("File是否是文件:" + file.isFile());
- File最后修改时间
实例:
1 // File最后修改时间 2 System.out.println("File最后修改时间:" + new Date(file.lastModified()));
- File的大小
实例:
1 // File的大小 2 System.out.println("File的大小:" + file.length());
- File的文件名
实例:
1 // File的文件名 2 System.out.println("File的文件名:" + file.getName());
- File的当前目录路径
实例:
1 // File的当前目录路径 2 System.out.println("File的当前目录路径:" + file.getPath());
- File获取绝对路径
实例:
1 // File获取绝对路径 2 System.out.println("File获取绝对路径:" + file.getAbsolutePath());
- File删除文件
实例:
1 // File删除文件 2 System.out.println("File删除文件:" + file.delete());
- File的mkdir与mkdirs区别
mkdir():目录结构中有一个不存在,则不会创建整个目录树
mkdirs():目录结构中有一个不存在也没关系;创建整个目录树
实例:
1 File file = new File("/see/go/to/to"); 2 3 //目录结构中有一个不存在,则不会创建整个目录树 4 boolean flag = file.mkdir(); 5 6 //创建失败 7 System.out.println(flag); 8 9 10 File file2 = new File("/see/go/to/to"); 11 12 //目录结构中有一个不存在也没关系;创建整个目录树 13 boolean flag2 = file2.mkdirs(); 14 15 //创建成功 16 System.out.println(flag2);
应用
使用递归算法,以树状结构展示目录树
- 递归的本质就是自身调用自身的过程
- 两个条件必须有,何时调用自己,何时不调用
- 递归头:何时调用自己
- 递归体:何时不调用自己,否则就是死循环了
1 public static void main(String[] args) { 2 3 File f = new File("/Users/8888/IdeaProjects"); 4 printFile(f, 0); 5 } 6 7 8 /** 9 * 打印文件信息 10 * 11 * @param file 文件名称 12 * @param level 层次数(实际就是:第几次递归调用) 13 */ 14 static void printFile(File file, int level) { 15 //输出层次数 16 for (int i = 0; i < level; i++) { 17 System.out.print("-"); 18 } 19 //输出文件名 20 System.out.println(file.getName()); 21 //如果file是目录,则获取子文件列表,并对每个子文件进行相同的操作 22 if (file.isDirectory()) { 23 File[] files = file.listFiles(); 24 for (File temp : files) { 25 //递归调用该方法:注意等+1 26 printFile(temp, level + 1); 27 } 28 } 29 }