Path相關核心API
1、Paths作為工具類,簡化Path的創建過程。通過FileSystem創建平臺相關的Path。
2、FileSystems作為工具類,簡化FileSystemProvider,以及相應FileSystem的創建過程。
1)獲取默認系統參數、Uri、Path的FileSystemProvider
2)通過provider獲取FileSystem
3、UnixPath實現在構造時
1)移除多餘的/,並檢查字符的有效性
2)默認UTF-8編碼路徑字符串為字節數組,用於後續的Path操作
Path操作
- 操作Path字符串本身,不訪問文件系統
String toString();將Path轉換為字符串形式
Path getFileName();root最遠一級的目錄或文件
Path getName(int index);以 / 分組,以0開始,獲取指定所有的name
int getNameCount();以 / 分組,name的個數
Path subpath(int beginIndex, int endIndex);不包括根路徑,包括beginIndex,不包括endIndex的name組成的Path
Path getParent();除去FileName的路徑
Path getRoot();unix的root目錄就是 /
Path toAbsolutePath();1、絕對路徑轉換後不變;2、相對路徑轉換後為工作目錄/相對路徑
Path resolve(String other);1、other是相對路徑追加到原路徑的後面;2、other是絕對路徑,則直接返回
Path relativize(Path other);path導航到other路徑的操作步驟
- 訪問文件系統,若不存在則拋出異常
Path toRealPath(LinkOption... options) throws IOException;1、解析符號鏈接的實際Path;2、相對路徑轉為絕對路徑;3、解析冗餘路徑:.(當前目錄) 或 ..(父目錄)
外部存儲擴展
FileSystemProvider,作為SPI可以由第三方實現。如果有第三方外部存儲的場景,可以自定義Scheme,來對應相應的FileSystemProvider。同時,在調用FileSystemProvider的public abstract Path getPath(URI uri)方法時,建議遵循Path的工廠定義規範,委派給相應的FileSystem實現來獲取平臺相關的Path。
閱讀更多 有趣的代碼 的文章