Path类
1、Path的基本用法
Path代表文件系统中的位置,即文件的逻辑路径,并不代表物理路径,程序运行的时候JVM会把Path(逻辑路径)对应到运行时的物理位置上。
package com.javadu.common;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Created by duqi on 15/9/8.
*/
public class App {
public static void main(String[] args) {
Path listing = Paths.get("/usr/bin/zip");
System.out.println("File Name [" + listing.getFileName() +"]");
System.out.println("Number of Name Elements in the Path [" + listing.getNameCount() + "]");
System.out.println("Parent Path [" + listing.getParent() +"]");
System.out.println("Root Path [" + listing.getRoot() +"]");
System.out.println("Subpath from Root, 2 elements deep [" + listing.subpath(0,2) +"]");
}
}
上述程序的输出结果如下:

2、利用Path移除冗余项
- 利用normalize()方法可以去掉Path中的冗余信息,例如给定”./App.java”,如果直接使用
Paths.get("./App.java").getFileName();会找不到这个文件,必须得使用normalize()方法将冗余信息去掉。
- 利用toRealPath()方法可以检测出符号链接并解析出真正的路径。例如在我的家目录下有.zshrc文件,这个文件其实是个符号链接文件,表示如下,它的真实路径是“/Users/duqi/.zprezto/runcoms/zshrc”

查看下面代码:
package com.javadu.common;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Created by duqi on 15/9/8.
*/
public class App {
public static void main(String[] args) {
Path normalizedPath = Paths.get("./App.java").normalize();
System.out.println(normalizedPath);
try {
Path realPath = Paths.get("/Users/duqi/.zshrc").toRealPath();
System.out.println(realPath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
对应的执行结果是:

3、向后兼容
(1)java.io.File类中增加了toPath()方法,可以把已经有的File转换为新的Path;
(2)Path类中有个toFile()方法,可以把现有的Path转换为File对象。
处理目录和目录树
文件系统I/O
异步IO