当前位置: 首页 > news >正文

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. 面试常见问题

  1. File 类能直接读写文件内容吗?

    • 不能,需配合 FileInputStream/FileWriter

  2. 如何递归遍历目录?

    • 用 listFiles() + 递归(见上文示例)。

  3. mkdir() 和 mkdirs() 的区别?

    • mkdir() 只能创建单级目录,mkdirs() 可创建多级。


10. 实战应用

  • 文件管理工具:批量重命名、删除过期文件。

  • 日志清理:定期删除旧日志文件。

  • 配置文件读取:检查文件是否存在后加载。

练习

  1. 写一个程序,统计某个目录下所有 .java 文件的总行数。

  2. 实现一个递归复制目录的功能(使用 File 或 NIO.2)。

相关文章:

  • 数据结构手撕--【二叉树】
  • windows一键测速DNS并切换
  • 2023年第十四届蓝桥杯Scratch02月stema选拔赛真题——算式题
  • MySQL表的操作 -- 表的增删改查
  • U8G2在PC端模拟(C语言版本)
  • 【计算机视觉】CV实战项目 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
  • Swift闭包(Closure)深入解析与底层原理
  • Java—— 常见API介绍 第五期
  • 什么是非关系型数据库
  • Redis的主从模式和哨兵模式
  • 【网络】MQTT协议
  • NLP系列【自然语言处理的深度学习模型综述】
  • 水池水位自动控制器如何征服污水水池?
  • c#加密证件号的中间部分,改为*号
  • Redis高频面试题——String对象
  • [ESP-IDF]:esp32-camera 使用指南 ESP32S3-OV2640 用例测试
  • 优化非线性复杂系统的参数
  • Linux基础IO(十一)之动态库(基础IO的最后一篇啦!)
  • CentOS系统防火墙服务介绍
  • 发放优惠券
  • 万能险新规落地:保险期限不得低于五年,明确万能险销售“负面清单”
  • 哈工大赵杰:人形机器人要拓展人的能力而非一味复制,未来产业要做成至少10年
  • 人大法工委:涉核领域还需要有一部统领性的基础法律
  • 猿辅导武汉公司一员工猝死,死者亲属:他原计划5月2日举行婚礼
  • 最高法:“盗链”属于信息网络传播行为,构成侵犯著作权罪
  • 央行:25日将开展6000亿元MLF操作,期限为1年期