关注

Java File 文件操作类超全教程 | 路径处理、文件创建删除、递归遍历实战

一、前言

做 Java 开发时,本地文件、文件夹读写、目录遍历是高频需求。java.io.File 是 Java 专门用来管理文件 / 文件夹路径的核心类,它只负责文件元信息操作,不具备文件内容读写能力,文件内容读取写入需要配合 IO 流。 本文整合 File 全部 API、路径规则、常用实战案例、递归遍历代码以及开发踩坑点,零基础也能看懂,可直接复制使用。

二、File 基础:对象创建与路径规则

1、三种构造方法

File 对象仅仅代表一个路径,对应的文件 / 文件夹可以真实存在,也可以不存在。

// 方式1:传入完整路径字符串
File f1 = new File("D:\\demo\\test.txt");
// 方式2:父路径字符串 + 子文件名
File f2 = new File("D:\\demo", "test.txt");
// 方式3:父File对象 + 子文件名(推荐,路径拼接更稳定)
File parent = new File("D:\\demo");
File f3 = new File(parent, "test.txt");

2、路径两种写法

  1. Windows 路径转义 \\ 是转义反斜杠;也可以直接写 /,无需转义,跨平台兼容性更好。
  2. 绝对路径 从磁盘根目录完整路径,例如 D:/demo/test.txt,固定指向某一处文件。
  3. 相对路径 相对于当前项目根目录,移植性更强,直接写文件名即可。
方法功能说明
exists()判断当前路径的文件 / 文件夹是否存在
isFile()判断是否为普通文件(必须存在才返回 true)
isDirectory()判断是否为文件夹(必须存在才返回 true)

四、文件 / 文件夹 创建 & 删除 API

创建方法区分(极易混淆)

  1. createNewFile()只创建文件,不能创建文件夹;文件已存在返回 false
  2. mkdir():仅创建单级文件夹,多级路径创建失败
  3. mkdirs():创建多级文件夹,日常开发首选

删除方法

delete():删除文件 / 空文件夹;无法直接删除内部带有文件的文件夹

// 创建文件
File file = new File("demo.txt");
file.createNewFile();
// 创建多级文件夹
File dir = new File("a/b/c");
dir.mkdirs();
// 删除文件
file.delete();

五、文件基础信息获取 API

  • length():获取文件字节大小,文件夹调用返回 0
  • getName():获取文件 / 文件夹名称
  • getAbsolutePath():获取完整绝对路径
  • getPath():获取构造方法传入的原始路径

六、目录遍历核心 listFiles ()

方法作用

File[] listFiles() 获取当前文件夹下一级所有文件 / 文件夹 File 对象数组

关键避坑规则(重点)

  1. 路径不存在、路径是文件、无访问权限 → 返回 null,遍历前必须判空,否则空指针报错
  2. 空文件夹 → 返回长度为 0 的空数组,不会返回 null

拓展递归练习:不死神兔(斐波那契)

递归基础算法题,巩固递归思想

// 获取第n个月兔子对数
public static int getRabbitNum(int month){
    if(month == 1 || month == 2){
        return 1;
    }
    return getRabbitNum(month - 1) + getRabbitNum(month - 2);
}

八、开发避坑总结(面试高频)

  1. 路径推荐使用 /,避免 \\ 转义书写繁琐;
  2. 使用 listFiles()必须判断是否为 null,防止空指针异常;
  3. delete() 不能直接删除存有文件的文件夹,只能递归清空后删除;
  4. 创建 API 不可混用:createNewFile() 创建文件,mkdirs() 创建文件夹;
  5. 递归遍历层级过深会出现栈溢出,超大目录建议使用 NIO 非递归遍历;
  6. File 类仅操作文件路径、属性,不能读写文件内容,文件读写需要 IO 字符 / 字节流。

九、文末总结

File 是 Java IO 体系的前置基础,日常文件上传、日志处理、本地资源读取都离不开它。掌握构造方法、路径规则、增删 API 后,递归遍历是核心难点。下一篇我会分享 Java IO 字节流、字符流文件读写教程。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2601_96029214/article/details/163000546

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--