java 文件的操作(Path、Paths、Files)

打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

Path、Paths 和 Files 是 Java NIO(New I/O)文件处置惩罚系统中的核心组件,它们提供了比传统 java.io.File 更加灵活和高效的文件操作方式。
1. 概述

随着 Java 7 引入 NIO.2(即 Java New I/O 2),文件处置惩罚得到了显著改进。Path、Paths 和 Files 是 NIO.2 中用于文件和目录操作的三个关键组件:

  • Path:表示文件系统中的路径,雷同于传统的 java.io.File,但更加灵活和功能丰富。
  • Paths:一个工具类,提供静态方法用于创建 Path 实例。
  • Files:一个实用工具类,提供了大量静态方法用于执行文件和目录的各种操作,如创建、删除、复制、移动、读取和写入等。
相比传统的 File 类,NIO.2 提供了更好的错误处置惩罚、更丰富的功能以及对差别文件系统的支持。
2. Path 接口

概述

Path 是一个接口,位于 java.nio.file 包中,用于表示文件系统中的路径。它提供了一种平台无关的方式来表示文件和目录的路径,并支持丰富的路径操作。
主要功能和方法

以下是 Path 接口的一些关键方法和功能:
路径创建与解析


  • Path resolve(String other):将给定的路径字符串解析为当前路径的子路径。
  • Path resolve(Path other):将给定的 Path 解析为当前路径的子路径。
  • Path relativize(Path other):盘算从当前路径到给定路径的相对路径。
路径信息


  • String getFileName():返回路径中的文件名部分。
  • Path getParent():返回路径的父路径。
  • Path getRoot():返回路径的根组件。
  • int getNameCount():返回路径中的名称元素数。
  • Path getName(int index):返回指定索引的名称元素。
路径转换


  • Path toAbsolutePath():将相对路径转换为绝对路径。
  • Path normalize():规范化路径,去除冗余的名称元素,如 "." 和 ".."。
路径比力


  • boolean startsWith(String other):判断路径是否以给定的路径字符串开头。
  • boolean endsWith(String other):判断路径是否以给定的路径字符串结尾。
  • boolean equals(Object other):判断两个路径是否相称。
其他方法


  • Iterator iterator():返回一个迭代器,用于遍历路径中的名称元素。
  • String toString():返回路径的字符串表示。
  • String toAbsolutePath().toString():返回绝对路径的字符串表示。
示例代码
  1. import java.nio.file.Path;
  2. import java.nio.file.Paths;
  3. public class PathExample {
  4.     public static void main(String[] args) {
  5.         // 创建 Path 实例
  6.         Path path = Paths.get("src", "main", "java", "Example.java");
  7.         
  8.         // 获取文件名
  9.         System.out.println("文件名: " + path.getFileName());
  10.         
  11.         // 获取父路径
  12.         System.out.println("父路径: " + path.getParent());
  13.         
  14.         // 获取根路径
  15.         System.out.println("根路径: " + path.getRoot());
  16.         
  17.         // 规范化路径
  18.         Path normalizedPath = path.normalize();
  19.         System.out.println("规范化路径: " + normalizedPath);
  20.         
  21.         // 转换为绝对路径
  22.         Path absolutePath = path.toAbsolutePath();
  23.         System.out.println("绝对路径: " + absolutePath);
  24.         
  25.         // 解析子路径
  26.         Path resolvedPath = path.resolve("subdir/File.txt");
  27.         System.out.println("解析后的路径: " + resolvedPath);
  28.         
  29.         // 计算相对路径
  30.         Path basePath = Paths.get("src/main");
  31.         Path relativePath = basePath.relativize(path);
  32.         System.out.println("相对路径: " + relativePath);
  33.         
  34.         // 遍历路径中的元素
  35.         System.out.println("路径元素:");
  36.         for (Path element : path) {
  37.             System.out.println(element);
  38.         }
  39.     }
  40. }
复制代码
输出示例:
  1. 文件名: Example.java
  2. 父路径: src/main/java
  3. 根路径: null
  4. 规范化路径: src/main/java/Example.java
  5. 绝对路径: /Users/username/project/src/main/java/Example.java
  6. 解析后的路径: src/main/java/Example.java/subdir/File.txt
  7. 相对路径: java/Example.java
  8. 路径元素:
  9. src
  10. main
  11. java
  12. Example.java
复制代码
3. Paths 类

概述

Paths 是一个最终类,位于 java.nio.file 包中,提供了静态方法用于创建 Path 实例。它简化了 Path 对象的创建过程,使代码更加简便和易读。
创建 Path 实例
  1. import java.nio.file.Path;
  2. import java.nio.file.Paths;
  3. import java.net.URI;
  4. public class PathsExample {
  5.     public static void main(String[] args) {
  6.         // 使用多个字符串片段创建路径
  7.         Path path1 = Paths.get("C:", "Users", "Public", "Documents");
  8.         System.out.println("路径1: " + path1);
  9.         
  10.         // 使用单个字符串创建路径
  11.         Path path2 = Paths.get("/home/user/docs");
  12.         System.out.println("路径2: " + path2);
  13.         
  14.         // 使用相对路径创建路径
  15.         Path path3 = Paths.get("src/main/java/Example.java");
  16.         System.out.println("路径3: " + path3);
  17.          
  18.         // 组合路径片段
  19.         Path basePath = Paths.get("/home/user");
  20.         Path combinedPath = basePath.resolve("downloads/music");
  21.         System.out.println("组合后的路径: " + combinedPath);
  22.     }
  23. }
复制代码
输出示例:
  1. 路径1: C:\Users\Public\Documents
  2. 路径2: /home/user/docs
  3. 路径3: src/main/java/Example.java
  4. 组合后的路径: /home/user/downloads/music
复制代码
注意事项


  • Paths.get(...) 方法会根据操作系统主动处置惩罚路径分隔符,无需手动指定。例如,在 Windows 上会利用 \,在 Unix/Linux 上会利用 /。
4. Files 类

概述

Files 是一个最终类,位于 java.nio.file 包中,提供了大量的静态方法用于执行文件和目录的各种操作。它与 Path 接口紧密集成,提供了比 java.io.File 更加丰富和高效的功能。
主要功能和方法

Files 类的方法可以大致分为以下几类:

  • 文件和目录的创建
  • 文件和目录的删除
  • 文件和目录的复制与移动
  • 文件内容的读取与写入
  • 文件属性的获取与修改
  • 目录的遍历和查找
1. 文件和目录的创建


  • static Path createFile(Path path, FileAttribute... attrs):创建一个新文件。
  • static Path createDirectory(Path dir, FileAttribute... attrs):创建一个新目录。
  • static Path createDirectories(Path dir, FileAttribute... attrs):递归地创建目录,包括不存在的父目录。
2. 文件和目录的删除


  • static void delete(Path path):删除指定的文件或目录。如果路径是目录,则目录必须为空。
  • static boolean deleteIfExists(Path path):删除指定的文件或目录,如果存在的话。
3. 文件和目录的复制与移动


  • static Path copy(Path source, Path target, CopyOption... options):复制文件或目录。
  • static Path move(Path source, Path target, CopyOption... options):移动或重命名文件或目录。
4. 文件内容的读取与写入

<ul>static byte[] readAllBytes(Path path):读取文件的所有字节。
static List readAllLines(Path path, Charset cs):按行读取文件内容。
static Path write(Path path, byte[] bytes, OpenOption... options):将字节数组写入文件。
<strong>static Path write(Path path, Iterable
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表