JDK源码阅读-------自学笔记(十七)(java.io.File类)

File类简介

  • java.io.File类:抽象代表文件和目录。
  • 使用此类,相当于获取了系统的文件,可以对其进行操作.
  • 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类

File初始化

1 File file = new File("//");
View Code

注:

参数添加对应的目录地址或者添加文件的地址 目录地址使用"/",或者""来分割

常用方法及实战

  • 修改文件名称

实例:

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);
View Code
  • 获取当前项目路径,并对其下操作

当前项目下,新建文件

实例:

1  try {
2         file = new File("test.txt");
3         file.createNewFile();
4     } catch (IOException e) {
5         e.printStackTrace();
6     }
View Code
  • File是否存在

实例:

1     // File是否存在
2     System.out.println("File是否存在:" + file.exists());
View Code
  • File是否是目录

实例:

1     // File是否是目录
2     System.out.println("File是否是目录:" + file.isDirectory());
View Code
  • File是否是文件

实例:

1     // File是否是文件
2     System.out.println("File是否是文件:" + file.isFile());
View Code
  • File最后修改时间

实例:

1     // File最后修改时间
2     System.out.println("File最后修改时间:" + new Date(file.lastModified()));
View Code
  • File的大小

实例:

1      // File的大小
2     System.out.println("File的大小:" + file.length());
View Code
  • File的文件名

实例:

1     // File的文件名
2     System.out.println("File的文件名:" + file.getName());
View Code
  • File的当前目录路径

实例:

1     // File的当前目录路径
2     System.out.println("File的当前目录路径:" + file.getPath());
View Code
  • File获取绝对路径

实例:

1    // File获取绝对路径
2     System.out.println("File获取绝对路径:" + file.getAbsolutePath());
View Code
  • File删除文件

实例:

1     // File删除文件
2     System.out.println("File删除文件:" + file.delete());
View Code
  • 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);
View Code

应用

使用递归算法,以树状结构展示目录树

  • 递归的本质就是自身调用自身的过程
  • 两个条件必须有,何时调用自己,何时不调用
  • 递归头:何时调用自己
  • 递归体:何时不调用自己,否则就是死循环了
 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 }
View Code
原文地址:https://www.cnblogs.com/liuyangfirst/p/12907840.html