O 中的Path核心接口及外部存儲擴展

Path相關核心API

Java File I/O 中的Path核心接口及外部存儲擴展

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。


分享到:


相關文章: