ToB企服应用市场:ToB评测及商务社交产业平台
标题:
java 文件的操作(Path、Paths、Files)
[打印本页]
作者:
何小豆儿在此
时间:
2024-10-14 16:44
标题:
java 文件的操作(Path、Paths、Files)
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()
:返回绝对路径的字符串表示。
示例代码
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathExample {
public static void main(String[] args) {
// 创建 Path 实例
Path path = Paths.get("src", "main", "java", "Example.java");
// 获取文件名
System.out.println("文件名: " + path.getFileName());
// 获取父路径
System.out.println("父路径: " + path.getParent());
// 获取根路径
System.out.println("根路径: " + path.getRoot());
// 规范化路径
Path normalizedPath = path.normalize();
System.out.println("规范化路径: " + normalizedPath);
// 转换为绝对路径
Path absolutePath = path.toAbsolutePath();
System.out.println("绝对路径: " + absolutePath);
// 解析子路径
Path resolvedPath = path.resolve("subdir/File.txt");
System.out.println("解析后的路径: " + resolvedPath);
// 计算相对路径
Path basePath = Paths.get("src/main");
Path relativePath = basePath.relativize(path);
System.out.println("相对路径: " + relativePath);
// 遍历路径中的元素
System.out.println("路径元素:");
for (Path element : path) {
System.out.println(element);
}
}
}
复制代码
输出示例:
文件名: Example.java
父路径: src/main/java
根路径: null
规范化路径: src/main/java/Example.java
绝对路径: /Users/username/project/src/main/java/Example.java
解析后的路径: src/main/java/Example.java/subdir/File.txt
相对路径: java/Example.java
路径元素:
src
main
java
Example.java
复制代码
3. Paths 类
概述
Paths 是一个最终类,位于 java.nio.file 包中,提供了静态方法用于创建 Path 实例。它简化了 Path 对象的创建过程,使代码更加简便和易读。
创建 Path 实例
import java.nio.file.Path;
import java.nio.file.Paths;
import java.net.URI;
public class PathsExample {
public static void main(String[] args) {
// 使用多个字符串片段创建路径
Path path1 = Paths.get("C:", "Users", "Public", "Documents");
System.out.println("路径1: " + path1);
// 使用单个字符串创建路径
Path path2 = Paths.get("/home/user/docs");
System.out.println("路径2: " + path2);
// 使用相对路径创建路径
Path path3 = Paths.get("src/main/java/Example.java");
System.out.println("路径3: " + path3);
// 组合路径片段
Path basePath = Paths.get("/home/user");
Path combinedPath = basePath.resolve("downloads/music");
System.out.println("组合后的路径: " + combinedPath);
}
}
复制代码
输出示例:
路径1: C:\Users\Public\Documents
路径2: /home/user/docs
路径3: src/main/java/Example.java
组合后的路径: /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
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4