Path接口
通过前面的学习可知,File虽然可以访问文件系统,但是File类所提供的方法性能较低,大多数方法在出错时仅返回失败而不提供异常信息,不仅如此,File类还不能利用特定的文件系统的特性。为了弥补这种不足,NIO.2提供了一个Path接口,该接口是一共用在文件系统中定位文件的对象,通常表示一个依赖于系统的文件路径。除此之外,NIO.2还提供了Paths和Files两个工具类,其中Paths类中提供了两个返回Path的静态方法,通过这两个方法可以创建Path对象,而Files类中提供了大量的静态方法来操作文件。
接下来列举一下Path中的常用方法,如表1所示。
表1 Path接口的常用方法
方法声明 | 功能描述 |
---|---|
boolean endsWith(String other) | 判断当前路径是否以指定的字符串结尾 |
Path getName(int index) | 返回此路径的名称元素作为路径对象 |
int getNameCount() | 返回路径中名称元素的数量 |
Path getParent() | 返回父路径,如果此路径没有父路径,则返回null |
Path getRoot() | 返回该路径的根组件作为路径对象,如果此路径没有根组件,则返回null |
Path toAbsolutePath() | 返回表示此路径的绝对路径的路径对象 |
URI toUri() | 返回表示此路径的URI地址 |
了解了Path接口的常用方法及其功能后,接下来通过一个案例来演示Path接口的基本使用,如文件1所示。
文件1 Example20.java
1 import java.nio.file.Path;
2 import java.nio.file.Paths;
3 public class Example20 {
4 public static void main(String[] args) {
5 // 使用Paths的get()方法创建Path对象
6 Path path = Paths.get("D:\\test\\文件夹\\test.txt");
7 // 输出Path对象中的信息
8 System.out.println("path的根路径:" + path.getRoot());
9 System.out.println("path的父路径:" + path.getParent());
10 System.out.println("path中的路径名称数:" + path.getNameCount());
11 // 循环输出路径名称
12 for (int i = 0; i < path.getNameCount(); i++) {
13 // 获取指定索引处的路径名称
14 Path name = path.getName(i);
15 System.out.println("索引为" + i + " 的路径的名称为: " + name);
16 }
17 System.out.println("path的URI路径为:" + path.toUri());
18 System.out.println("path的绝对路径:" + path.toAbsolutePath());
19 }
20 }
运行结果如图1所示。
图1 运行结果
文件1中,首先使用Paths的get()方法创建了Path对象,然后分别使用Path对象中的各种方法来输出对象中的路径信息。