NIO2 中的 Path API 构成了 Java 7 的主要新功能之一,与 File API 一起使用可以更方便地操作系统文件。
实例化Path对象
Path的帮助类,Paths,它是创建 Path 对象最常用的方法。一般来说,使用 Paths 的静态方法来创建 Path 对象。
Path path = Paths.get("path string");
在 path string 中使用正斜杠还是反斜杠都没有关系,API 会根据底层文件系统的要求来解析这个参数。
路径不必是一个存在的文件,仅仅只是一个抽象的名字序列。只有当要创建文件的时候,才会调用方法根据路径创建文件。
Path tempPath = Paths.get("D:/temp");
Path nonExist = tempPath.resolve("nonExist");
System.out.println(Files.exists(nonExist));
在我的本地系统中,没有 D:\\temp\\nonExist
这个路径,所以打印结果是 false。
获取 Path 信息
我们可以将 Path 对象视为名称元素的序列。比如:D:\temp\1.txt,这个路径有两个元素,一个是 temp,另外一个是 1.txt。它们两个名称元素共同组成了一个序列。既然是序列,我们就可以通过索引下标的方式获取到具体的名称元素。
最后一个元素称为文件名,不管它是否是一个实际的文件。
Path tempPath = Paths.get("D:/temp/1.txt");
System.out.println(tempPath.getFileName());
拼接 Path
使用 resolve 方法可以实现连接任意两条路径。
简单地说,我们可以在任何 Path 上调用 resolve 方法,并传入一个部分路径作为参数。该部分路径附加到原始路径:
Path tempPath = Paths.get("D:/temp");
Path path = tempPath.resolve("1.txt");
System.out.println(path.toString());
打印结果:
D:\temp\1.txt
但是,当传递给 resolve 方法的路径字符串不是部分路径,而是绝对路径时,这个方法直接返回传入的路径:
Path tempPath = Paths.get("D:/temp");
Path path = tempPath.resolve("D:/test");
System.out.println(path.toString());
打印结果:
D:\test