JavaSE 7,8:确定特定文件系统支持的视图
如果您對(duì)文件或目錄有疑問(wèn),例如是否隱藏文件,是否為目錄,文件的大小以及文件的所有者,則可以從元數(shù)據(jù)中獲得這些問(wèn)題(以及許多其他問(wèn)題)的答案,這是關(guān)于其他數(shù)據(jù)的數(shù)據(jù)。
NIO.2將元數(shù)據(jù)的概念與屬性相關(guān)聯(lián),并通過(guò)java.nio.file.attribute包提供對(duì)它們的訪問(wèn)。 由于不同的文件系統(tǒng)對(duì)應(yīng)跟蹤哪些屬性具有不同的概念,因此NIO.2將屬性分組為視圖,每個(gè)視圖都映射到特定的文件系統(tǒng)實(shí)現(xiàn)。
通常,視圖通過(guò)通用方法readAttributes()批量提供屬性。 另外,可以分別使用java.nio.file.Files類中的getAttribute()和setAttribute(方法提取和設(shè)置單個(gè)屬性,根據(jù)視圖 ,其他方法也可以用于其他任務(wù)。
在這里,我將解釋如何使用NIO.2來(lái)管理有關(guān)文件元數(shù)據(jù)的更多詳細(xì)信息。 屬性分為幾類,現(xiàn)在它們也涵蓋了POSIX系統(tǒng)。
在嘗試訪問(wèn)視圖的屬性之前,請(qǐng)確保文件系統(tǒng)支持相應(yīng)的視圖。
NIO.2帶有一組六個(gè)視圖( Basic Dos , POSIX FileOwner , ACL和UserDefinedFileAttributeView )。
- POSIX (UNIX的便攜式操作系統(tǒng)接口)。
- 所有文件系統(tǒng)都支持基本視圖,因此您應(yīng)該至少在輸出中獲得基本名稱。
支持的視圖是:
這是所有文件系統(tǒng)實(shí)現(xiàn)都必須支持的基本屬性的視圖。 屬性視圖名稱是基本的。
該視圖在支持DOS屬性的文件系統(tǒng)上提供了標(biāo)準(zhǔn)的四個(gè)受支持的屬性。 屬性視圖名稱為dos。
此視圖使用支持POSIX(Unix的便攜式操作系統(tǒng)接口)標(biāo)準(zhǔn)系列(例如Unix)的文件系統(tǒng)上支持的屬性擴(kuò)展了基本屬性視圖。 屬性視圖名稱為posix。
任何支持文件所有者概念的文件系統(tǒng)實(shí)現(xiàn)均支持此視圖。 屬性視圖名稱為所有者。
該視圖支持讀取或更新文件的ACL。 支持NFSv4 ACL模型。 屬性視圖名稱為acl。
該視圖支持用戶定義的元數(shù)據(jù)。
這是顯示不同操作的代碼片段
- 獲取所有支持的文件系統(tǒng)視圖 import static java.lang.System.out;.......FileSystem fs = FileSystems.getDefault();for (String sfsView : fs.supportedFileAttributeViews()) {out.println(sfsView);}
- 檢查文件存儲(chǔ)是否支持特定視圖
您可以通過(guò)調(diào)用FileStore.supportsFileAttributeView()方法來(lái)測(cè)試文件存儲(chǔ)上的特定視圖。 您可以將所需的視圖作為字符串或類名傳遞。 import static java.lang.System.out;.......FileSystem fs = FileSystems.getDefault();for (FileStore fileStore : fs.getFileStores()) {boolean supported = fileStore.supportsFileAttributeView(BasicFileAttributeView.class);out.println("Is " + fileStore.name() + ": supports \'basic file attribute view\' ---> " + (supported ? "Yes" : "No")); } - 檢查特定文件所在的文件存儲(chǔ)是否支持單個(gè)視圖
此外,您可以檢查特定文件所在的文件存儲(chǔ)是否支持單個(gè)視圖。 import static java.lang.System.out; import static java.lang.System.err;.......FileSystem fs = FileSystems.getDefault();try {FileStore store = getFileStore(path);boolean supported = store.supportsFileAttributeView("acl");out.println("Is " + store.name() + ": supports \'ACL file attribute view\' ---> " + (supported ? "Yes" : "No")); } catch (IOException ex) {err.println(ex); }
僅此而已,如果您喜歡的話,盡情享受吧。
資源:
- JDK7:第1部分-Java 7 NIO.2(JSR 203)的強(qiáng)大功能(重要概念)
- JSR 203:針對(duì)JavaTM平臺(tái)(“ NIO.2”)的更多新I / O API
翻譯自: https://www.javacodegeeks.com/2014/03/javase-78-determining-views-supported-by-a-particular-file-system.html
總結(jié)
以上是生活随笔為你收集整理的JavaSE 7,8:确定特定文件系统支持的视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓考勤定位伪装位置(安卓考勤)
- 下一篇: 在Window上使用Jenkins自动发