天天看點

Java NIO 檔案系統:FileSystem類1、FileSystem執行個體的擷取:2、FileSystem類的方法:

    FileSystem類提供檔案系統的接口,是用于通路檔案系統中的檔案和其他對象的工廠類。

1、FileSystem執行個體的擷取:

    FileSystem定義了protected權限的構造器,是以使用者不能通過new關鍵字直接構造FileSystem的執行個體。在FileSystems類中,定義了一系列擷取FileSystem執行個體的方法:

    1)getDefault():傳回預設的檔案系統,預設的檔案系統,建立的對象可以提供對“能被JVM通路的檔案系統”的通路,它的工作目錄是系統屬性"user.dir"指定的目錄,允許和File類的互操作性。

    2)getFileSystem(URI uri):傳回一個指向已存在的FileSystem的引用。如果找不到對應的已存在的FileSystem,則會抛出異常ProviderNotFoundException。

    3)newFileSystem(URI uri, Map<String,?> env):根據URI建立一個資訊檔案系統。周遊已安裝的FileSystemProvider執行個體們,并根據uri的scheme (不區分大小寫)從中找到對應的供應者。如果能找到,就調用該provider的相應方法去建立FileSystem;否則會抛出異常ProviderNotFoundException。

    一旦檔案系統關閉,根據provider的具體實作來決定,是否允許重新根據這個URI的scheme來建立一個檔案系統。

    4)newFileSystem(URI uri, Map<String,?> env, ClassLoader loader):和上面的方法比,如果找不到對應的provider,會在抛出異常前先嘗試根據給定的ClassLoader去定位provider。

    5)newFileSystem(Path path, ClassLoader loader):建構一個檔案系統去通路path指定的檔案的内容。這個方法使用的是專門用來建立虛拟檔案系統的providers,在它們建立的虛拟檔案系統中一個或多個檔案的内容被像檔案系統一樣對待。(這個地方翻譯出來很奇怪,請參考JDK中的介紹:This method makes use of specialized providers that create pseudo file systems where the contents of one or more files is treated as a file system)。

2、FileSystem類的方法:

    1)getFileStores():傳回一個Iterable<FileStore>,用來周遊該檔案系統的各個FileStore。

    2)getPath(String first,String... more):将字元串拼接成一個路徑,并根據路徑生成Path的執行個體。作用和Paths的get(String first,String... more)方法基本類似。

    3)getPathMatcher(String syntaxAndPattern):傳回一個 

PathMatcher。

    4)getRootDirectories():傳回一個Iterable<Path>,用來周遊根目錄的路徑。代碼示例:

FileSystem fileSystem = FileSystems.getDefault();
Iterator<Path> iterator1 = fileSystem.getRootDirectories().iterator();
while (iterator1.hasNext()){
    System.out.println(iterator1.next());
}

console: /
           

    5)getSeparator():傳回名稱分隔符,字元串形式。代碼示例:

FileSystem fileSystem = FileSystems.getDefault();
System.out.println(fileSystem.getSeparator());

console: /
           

    6)getUserPrincipalLookupService():傳回該檔案系統的 

UserPrincipalLookupService

(可選操作)。由此産生的查找服務可用于查找使用者或組名。

    7)isOpen():判斷檔案系統是否已經打開了。

    8)isReadOnly():判斷這個檔案系統的file stores是隻讀的。

    9)newWatchService():建構了一種新的 WatchService(可選操作)。此方法構造了一個新的監視服務,該服務可用于監視更改和事件的注冊對象。

    10)provider():傳回建立此檔案系統的提供者(FileSystemProvider)。

    11)supportedFileAttributeViews():傳回檔案的屬性視圖支援這 

FileSystem

的names集。

    12)close():關閉此檔案系統。如果檔案系統已經關閉,則調用該方法沒有效果。