java 中Files的常用方法都有哪些?

Files类提供文件读写、属性检查、创建删除、复制移动、目录遍历等操作,基于Path和NIO.2,取代旧File类,方法多抛IOException需处理。

Java 中 Files 类是 java.nio.file 包下的工具类,提供了大量操作文件和目录的静态方法。它简化了文件读写、复制、删除、路径处理等常见操作。以下是 Files 的一些常用方法,按功能分类说明:

1. 文件读取与写入

这些方法适合处理小文件,内容直接在内存中操作。
  • Files.readAllLines(Path path):读取文件所有行,返回 List,默认使用 UTF-8 编码。
  • Files.readAllBytes(Path path):读取文件全部字节,返回 byte[],适合读取图片、二进制文件等。
  • Files.write(Path path, Iterable extends CharSequence> lines):将文本行写入文件,自动创建文件(如果不存在)。
  • Files.write(Path path, byte[] bytes):将字节数组写入文件,常用于保存二进制数据。

2. 文件检查与属性获取

判断文件状态或获取元信息。
  • Files.exists(Path path):判断路径对应的文件或目录是否存在。
  • Files.isDirectory(Path path):判断是否为目录。
  • Files.isRegularFile(Path path):判断是否为普通文件(非目录、符号链接等)。
  • Files.size(Path path):获取文件大小(字节数)。
  • Files.getLastModifiedTime(Path path):获取最后修改时间。
  • Files.getOwner(Path path):获取文件所有者(需文件系统支持)。

3. 文件创建与删除

管理文件生命周期。
  • Files.createFile(Path path):创建新文件,若已存在则抛出异常。
  • Files.createDirectory(Path path):创建单层目录,父目录需已存在。
  • Files.createDirectories(Path path):创建多级目录,自动补全父目录。
  • Files.delete(Path path):删除文件或空目录,若不存在会抛异常。
  • Files.deleteIfExists(Path path):删除文件,若不存在也不报错,返回布尔值。

4. 文件复制与移动

实现文件的迁移或备份。
  • Files.copy(Path source, Path target):复制文件,目标不能已存在。
  • Files.copy(Path source, Path target, CopyOption... options):可传入 StandardCopyOption 如 REPLACE_EXISTING、COPY_ATTRIBUTES 等控制行为。
  • Files.move(Path source, Path target):移动或重命名文件,也可用 CopyOption 控制。

5. 目录遍历与搜索

处理目录中的内容。
  • Files.list(Path dir):返回目录下直接子项的 Stream,可用于遍历。
  • Files.walk(Path start, int maxDepth):深度优先遍历目录树,支持限制层级。
  • Files.find(Path start, int maxDepth, BiPredicateasicFileAttributes> matcher):按条件查找文件,比如根据属性筛选。

6. 其他实用方法

  • Files.lines(Path path):返回文件每行内容的 Stream,适合大文件逐行处理。
  • Files.newBufferedReader(Path path):获取 BufferedReader,用于高效读取文本。
  • Files.newBufferedWriter(Path path):获取 BufferedWriter,用于写入文本。
  • Files.isSymbolicLink(Path path):判断是否为符号链接。

基本上就这些。Files 的设计更现代,基于 Path 和 NIO.2,推荐替代旧的 File 类操作。注意多数方法会抛出 IOException,调用时需要处理。