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對象
Path listing = Paths.get("/usr/bin/zip");
//獲取Path代表的文件(或目錄)名字
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() +"]");
//獲取從當前路徑的根目錄(0)到其第二個元素(2)之間的子路徑
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對象。