一、File 类介绍
- Java 中的 File 类是 java.io 包的一部分,它提供了操作文件和目录的能力。File 类可以用来表示文件系统中的文件或目录。
二、路径
在讲File用法之前咱们先介绍一下路径是什么?
在计算机中,路径(Path)是指文件或目录在文件系统中的位置。
路径可以分为两种:绝对路径(Absolute Path)和相对路径(Relative Path)。
绝对路径(Absolute Path)
绝对路径是指从文件系统的根目录(Root Directory)开始,到达文件或目录的完整路径。
-
根目录就是咱们电脑的C盘或者D盘等等盘
- 例如:我电脑的上这个Java笔记的绝对路径就是:D:\Java笔记
- 例如:我电脑的上这个Java笔记的绝对路径就是:D:\Java笔记
-
绝对路径的优点是:
- 它是指向文件唯一的位置
- 它可以在任何目录下使用
- 用绝对路径肯定能找到该文件
相对路径(Relative Path)
-
相对路径是指从当前目录开始,到达文件或目录的路径。
-
例如:HashMap底层原理.md文件相对于Java笔记来说的相对路径就是:\资源\HashMap底层原理.md
-
相对路径的优点是:
- 它可以简化路径的书写
知道了路径的概念,那么接下就步入正题:File的使用
二、File 类的构造方法
File 类有多个构造方法,可以根据不同的需求选择合适的构造方法:
方法名 | 方法描述 |
---|---|
File(String pathname) | 创建一个 File 对象,pathname 是文件或目录的路径 |
File(String parent, String child) | 创建一个 File 对象,parent 是父目录,child 是文件或目录的名称 |
File(File parent, String child) | 创建一个 File 对象,parent 是父目录的 File 对象,child 是文件或目录的名称 |
File(URI uri) | 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例 |
主要使用的是前三个,下面来具体演示一下:
三、File 类的常用方法
File 类提供了许多方法来操作文件和目录,以下是一些常用的方法:
创建文件/文件夹
方法名 | 方法描述 |
---|---|
createNewFile() | 创建文件 |
mkdir(): | 创建一个单层文件夹 |
mkdirs(): | 创建一个多层文件夹 |
- 具体演示:
注意:这里的路径是相对路径,是相对于当前Java项目的,使用绝对路径就可以在你想创建的地方创建
获取
方法名 | 方法描述 |
---|---|
getPath(): | 获取文件或目录的路径。 |
getAbsolutePath() | 获取文件或目录的绝对路径。 |
getName() | 获取文件或目录的名称。 |
getParent() | 获取文件或目录的父目录。 |
list(): | 获取路径中的文件和目录。 |
listFiles() | 获取中的文件和目录。 |
- 具体演示:
判断删除
方法名 | 方法描述 |
---|---|
exists() | 判断文件或目录是否存在。 |
isFile() | 判断是否是一个文件。 |
isDirectory() | 判断是否是一个目录。 |
delete() | 删除文件或目录。 |
renameTo() | 重命名文件或目录。 |
canRead() | 判断文件或目录是否可读。 |
canWrite() | 判断文件或目录是否可写。 |
canExecute() | 判断文件或目录是否可执行。 |
- 具体演示:
四、File类方法的应用
删除文件或者整个文件夹
File中的delete()只能删除文件或者空文件夹,那如何删除有文件的文件夹呢?
- 思路:既然只能delete()只能删除文件或者空文件夹,那么就先把文件夹最里面的文件/空文件夹删除,最里面的删除完了,那外面的文件夹不就成为一个空的文件夹了,那就可以用delete()删除了。
- 如何进入里面删除呢,我们又不知道这个文件夹有几层?
- 这个时候你是否想到递归了呢?
下面就是经典使用递归删除文件的方法
public static void deleteFile(String path){
File file = new File(path);
if (file.delete()) {//如果是个文件或空文件夹,直接删除,删除成功返回true,return退出,否则,提取出文件夹中的文件/文件夹列表
return;
}
File[] files = file.listFiles();// 提取出文件夹中的文件/文件夹列表
for (File file1 : files) {// 遍历文件/文件夹列表
deleteFile(file1.toString());//再次调用,直至到达文件或空文件夹
}
file.delete();//递归出来,删除最外层的文件夹
}
最后
如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍