Java File 类的常用方法详解
Java File
类的常用方法详解
File
类是 Java 中用于操作文件和目录的核心类,位于 java.io
包。它提供了丰富的方法来管理文件系统,包括创建、删除、重命名、查询属性、遍历目录等操作。
1. 构造方法
File
类提供多种构造方法,用于创建文件或目录的引用:
java
// 1. 通过路径字符串创建 File file1 = new File("C:/test/file.txt");// 2. 通过父路径 + 子路径创建 File file2 = new File("C:/test", "file.txt");// 3. 通过父 File 对象 + 子路径创建 File parentDir = new File("C:/test"); File file3 = new File(parentDir, "file.txt");
2. 文件/目录基本操作
(1)创建
方法 | 说明 |
---|---|
boolean createNewFile() | 创建新文件(仅当文件不存在时) |
boolean mkdir() | 创建单级目录 |
boolean mkdirs() | 创建多级目录 |
示例:
java
File file = new File("test.txt"); if (!file.exists()) {file.createNewFile(); // 创建文件 }File dir = new File("mydir"); dir.mkdir(); // 创建单级目录
(2)删除
方法 | 说明 |
---|---|
boolean delete() | 删除文件或空目录 |
void deleteOnExit() | JVM 退出时删除文件 |
示例:
java
File file = new File("test.txt"); file.delete(); // 直接删除File tempFile = new File("temp.txt"); tempFile.deleteOnExit(); // 程序退出时删除
(3)重命名/移动
方法 | 说明 |
---|---|
boolean renameTo(File dest) | 重命名或移动文件 |
示例:
java
File oldFile = new File("old.txt"); File newFile = new File("new.txt"); oldFile.renameTo(newFile); // 重命名或移动
3. 文件属性查询
方法 | 说明 |
---|---|
boolean exists() | 判断文件/目录是否存在 |
boolean isFile() | 判断是否是文件 |
boolean isDirectory() | 判断是否是目录 |
long length() | 获取文件大小(字节) |
long lastModified() | 获取最后修改时间(毫秒时间戳) |
String getName() | 获取文件名 |
String getPath() | 获取相对路径 |
String getAbsolutePath() | 获取绝对路径 |
String getParent() | 获取父目录路径 |
示例:
java
File file = new File("test.txt"); System.out.println("文件名:" + file.getName()); System.out.println("文件大小:" + file.length() + " bytes"); System.out.println("最后修改时间:" + new Date(file.lastModified()));
4. 目录遍历
方法 | 说明 |
---|---|
String[] list() | 返回目录下的文件名数组 |
File[] listFiles() | 返回目录下的 File 对象数组 |
File[] listFiles(FileFilter filter) | 过滤符合条件的文件 |
示例:
java
File dir = new File("C:/test");// 遍历所有文件 for (File file : dir.listFiles()) {System.out.println(file.getName()); }// 仅遍历 .txt 文件 File[] txtFiles = dir.listFiles((file) -> file.getName().endsWith(".txt"));
5. 路径处理
方法 | 说明 |
---|---|
String getCanonicalPath() | 获取规范路径(解析符号链接) |
File getCanonicalFile() | 返回规范路径的 File 对象 |
boolean isAbsolute() | 判断路径是否为绝对路径 |
示例:
java
File file = new File("./test.txt"); System.out.println("绝对路径:" + file.getAbsolutePath()); System.out.println("规范路径:" + file.getCanonicalPath());
6. 权限检查
方法 | 说明 |
---|---|
boolean canRead() | 检查文件是否可读 |
boolean canWrite() | 检查文件是否可写 |
boolean canExecute() | 检查文件是否可执行 |
示例:
java
File file = new File("test.txt"); System.out.println("可读:" + file.canRead()); System.out.println("可写:" + file.canWrite());
7. 递归删除目录
delete()
只能删除空目录,递归删除非空目录的示例:
java
public static void deleteDir(File dir) {if (dir.isDirectory()) {for (File file : dir.listFiles()) {deleteDir(file); // 递归删除子文件/目录}}dir.delete(); // 删除当前目录或文件 }
8. 记忆技巧
(1)方法分类
创建:createNewFile(), mkdir(), mkdirs() 删除:delete(), deleteOnExit() 属性:exists(), isFile(), length(), lastModified() 遍历:list(), listFiles() 路径:getAbsolutePath(), getCanonicalPath()
(2)常见操作流程
"先查
exists()
,再判isFile()
,
创建用createNewFile()
,删除要delete()
,
目录遍历listFiles()
,递归删除要记牢!"
9. 面试常见问题
-
File
类能直接读写文件内容吗?-
不能,需配合
FileInputStream
/FileWriter
。
-
-
如何递归遍历目录?
-
用
listFiles()
+ 递归(见上文示例)。
-
-
mkdir()
和mkdirs()
的区别?-
mkdir()
只能创建单级目录,mkdirs()
可创建多级。
-
10. 实战应用
-
文件管理工具:批量重命名、删除过期文件。
-
日志清理:定期删除旧日志文件。
-
配置文件读取:检查文件是否存在后加载。
练习:
-
写一个程序,统计某个目录下所有
.java
文件的总行数。 -
实现一个递归复制目录的功能(使用
File
或NIO.2
)。