Java 7 – NIO文件革命
我要指的更改是添加了java.nio.file軟件包。 java.nio.file軟件包添加了類和接口,使使用Java中的文件和目錄更加容易。 這些更改的首要也是最重要的一點(diǎn)就是復(fù)制或移動文件的能力。 我總是感到很沮喪,如果您要復(fù)制或移動文件,則必須滾動自己的“復(fù)制”或“移動”版本。 Guava項(xiàng)目com.google.common.io軟件包中提供的實(shí)用程序提供了這些功能,但我認(rèn)為復(fù)制和移動操作應(yīng)是該語言的核心部分。 在接下來的幾篇文章中,我將對此處討論的類/接口以及一些其他未涵蓋的類/接口進(jìn)行更詳細(xì)的介紹(包括代碼示例)。 這篇文章是java.nio.file軟件包中新功能的介紹和概述。
突圍責(zé)任
如果您看一下目前的java.io軟件包,那么絕大多數(shù)類都是針對輸入流,輸出流,讀取器或?qū)懭肫鞯摹?只有一個類定義用于直接使用文件系統(tǒng)的操作,即File類。 java.io中的某些其他類將File對象作為構(gòu)造函數(shù)中的參數(shù),但是所有文件和目錄的交互都是通過File類進(jìn)行的。 在java.nio.file包中,功能已被引入其他類/接口。 首先要討論的是Path接口和Files類。
路徑和文件
Path對象類似于java.io.File對象,因?yàn)樗梢员硎疚募到y(tǒng)上的文件或目錄。 但是,Path對象更為抽象,因?yàn)樗谴砦募到y(tǒng)上目錄層次結(jié)構(gòu)(可能包含或不包含文件)的一系列名稱。 “路徑”界面中沒有允許使用目錄或文件的方法。 定義的方法僅用于處理或操作Path對象,將一個Path解析為另一路徑,等等。(有一種方法可用于從Path toFile中獲取java.io.File對象。 File類現(xiàn)在包含一個toPath方法。)為了處理文件和目錄,Path對象與Files類一起使用。 Files類完全由用于處理目錄和文件的靜態(tài)方法組成,包括復(fù)制,移動和用于符號鏈接的函數(shù)。 Files類中的另一個有趣的方法是newDirectoryStream方法,該方法返回一個DirectoryStream對象,該對象可以遍歷目錄中的所有條目。 盡管java.io.File類具有在其中提供FileFilter實(shí)例的list方法,但是newDirectoryStream可以使用字符串“ glob”(例如“ * .txt”)進(jìn)行過濾。
文件存儲
如前所述,與java.io包中的文件系統(tǒng)的所有交互都是通過File類。 這包括獲取有關(guān)文件系統(tǒng)中已用或可用空間的信息。 在java.nio.file中,有一個FileStore類,它表示文件的存儲類型,無論是設(shè)備,分區(qū)還是concreate文件系統(tǒng)。 FileStore類定義用于獲取有關(guān)文件存儲信息的方法,例如getTotalSpace,getUsableSpace,getUnallocated空間。 可以通過調(diào)用Files.getFileStore(Path path)方法來獲取FileStore,該方法將返回該特定文件的FileStore。
文件系統(tǒng)和文件系統(tǒng)
顧名思義,文件系統(tǒng)提供對文件系統(tǒng)的訪問,并且是文件系統(tǒng)中其他對象的工廠。 例如,FileSystem類定義一個getPath方法,該方法將字符串(/ foo / bar)轉(zhuǎn)換為依賴于系統(tǒng)的Path對象,該對象可用于訪問文件或目錄。 FileSystem類還提供了一個getFileStores方法,該方法返回FileSystem中所有FileStore的可迭代方法。 FileSystems類使用靜態(tài)FactorySystems.getDefault方法提供對FileSystem對象的訪問。 還有一些用于創(chuàng)建自定義FileSystem對象的靜態(tài)方法。
結(jié)論
這是使用java.nio.file軟件包提供的文件的新功能的快速高級視圖。 有更多的信息尚未在此處討論,因此請看一下api文檔。希望這篇文章能夠使讀者對Java 7中改進(jìn)的文件處理感興趣。請確保在我們繼續(xù)探索時堅(jiān)持學(xué)習(xí)。更詳細(xì)的說明java.nio.file軟件包必須提供的內(nèi)容。
參考: Java 7的新增功能–我們的JCG合作伙伴 Bill Bejeck在“ 隨機(jī)編碼思想”博客上發(fā)表的(安靜的)NIO文件革命
翻譯自: https://www.javacodegeeks.com/2012/01/java-7-nio-file-revolution.html
總結(jié)
以上是生活随笔為你收集整理的Java 7 – NIO文件革命的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ping ddos攻击(ddos的pin
- 下一篇: 在运行时修补Java