最后更新时间:2015-03-12
这个Java Path接口是中Java 6或者Java 7中Java NIO 2更新的一部分。这个Java Path接口中Java 7中被添加到了Java NIO中。这个Path接口被放置到了java.nio.file包中,以至于这个Java Path的完整定义名称是:java.nio.file.Path。
一个Java Path实例显示了一个文件系统的路径。一个路径可以指向一个文件或者一个目录。一个路径可以是一个绝对路径或者是相对的路径。一个绝对路径包含来自于文件系统的根到它指向的文件或者目录的完整路径。一个相对路径包含了一个对于文件或者目录相对一些其他路径的路径。相对路径听起来可能有点混乱。不要担心。我将会在这一部分中详细的解释相对路径的含义。
不要在一些操作系统中把一个文件系统同这个path环境变量混淆。这个java.nio.file.Path接口对于path环境变量什么也没有做。
在许多方面,这个java.nio.file.Path接口跟java.io.File类是相似的,但是这里有一些很小的不同。在许多场景下,你可以用Path接口的使用代替File类的使用。
创建一个Path实例
为了使用一个java.nio.file.Path实例,你必须创建一个Path实例。你使用中Paths类中(java.nio.file.Paths)命名的Paths.get()的静态方法创建一个Path实例。这里有一个例子:
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathExample {
public static void main(String[] args) {
Path path = Paths.get("c:\\data\\myfile.txt");
}
}
第二,注意这个Paths.get("c:\\data\myfile.txt")方法调用。它是调用Paths.get()方法创建Path实例。换句话说,这个Paths.get()方法是一个工厂方法去创建Path实例。
创建一个绝对路径
创建一个绝对路径是通过调用Paths.get()工厂方法伴随着一个绝对路径的文件作为参数被做的。这里有一个例子:
Path path = Paths.get("c:\\data\\myfile.txt");
上面的路径是一个Windows文件系统路径。在一个Unix系统(Linux,MacOS,FreeBSD),上面的路径应该像这样:
Path path = Paths.get("/home/jakobjenkov/myfile.txt");
如果你找Windows机器上使用这种路径(以一个“/”开始的路径),这个路径对于当前的驱动将会被解释为相对路径。例如,这个路径:
/home/jakobjenkov/myfile.txt
C:/home/jakobjenkov/myfile.txt
一个相对路径是从一个路径(这个基础路径)指向到一个目录或者文件的路径。一个相对路径的完整路径(绝对路径)是通过使用一个相对路径结合基本路径得到的。
这个Java NIO的Path类也可以用来同相对路径工作。你可以使用这个Paths.get(basePath,relativePath)方法创建一个相对路径。这里有两个相对路径的例子:
Path projects = Paths.get("d:\\data", "projects");
Path file = Paths.get("d:\\data", "projects\\a-project\\myfile.txt");
第二个例子创建了一个Path实例,它指向了这个路径(文件):d:\data\projects\a-project\myfile.txt。
当同相对路径一起工作的时候,这里有两个特殊的编码你可以使用中路径字符串中。这些编码是:
Path currentDir = Paths.get(".");
System.out.println(currentDir.toAbsolutePath());
Path currentDir = Paths.get("d:\\data\\projects\.\a-project");
d:\data\projects\a-project
Path parentDir = Paths.get("..");
String path = "d:\\data\\projects\\a-project\\..\\another-project";
Path parentDir2 = Paths.get(path);
d:\data\projects\another-project
Path path1 = Paths.get("d:\\data\\projects", ".\\a-project");
Path path2 = Paths.get("d:\\data\\projects\\a-project",
"..\\another-project");
String originalPath =
"d:\\data\\projects\\a-project\\..\\another-project";
Path path1 = Paths.get(originalPath);
System.out.println("path1 = " + path1);
Path path2 = path1.normalize();
System.out.println("path2 = " + path2);
path1 = d:\data\projects\a-project\..\another-project
path2 = d:\data\projects\another-project
翻译地址:http://tutorials.jenkov.com/java-nio/path.html