是否可以在File實例上獲取和設置自定義元數據?我想使用通過我的系統處理的文件作爲某種非常簡單的數據庫,其中每個文件都應包含其他自定義元數據,例如發件人的電子郵件,某些時間戳等。是否可以使用Java在文件上設置自定義元數據?
它適用於一個內部系統,所以安全性不是問題。
是否可以在File實例上獲取和設置自定義元數據?我想使用通過我的系統處理的文件作爲某種非常簡單的數據庫,其中每個文件都應包含其他自定義元數據,例如發件人的電子郵件,某些時間戳等。是否可以使用Java在文件上設置自定義元數據?
它適用於一個內部系統,所以安全性不是問題。
在Java 7中,你可以使用Path
類和UserDefinedFileAttributeView
做到這一點。
這裏是從那裏採取的示例:
一個文件的MIME類型可以通過使用此代碼段被存儲爲用戶定義屬性:
Path file = ...;
UserDefinedFileAttributeView view = Files
.getFileAttributeView(file, UserDefinedFileAttributeView.class);
view.write("user.mimetype",
Charset.defaultCharset().encode("text/html");
要閱讀MIME類型屬性,則將使用此代碼段:
Path file = ...;
UserDefinedFileAttributeView view = Files
.getFileAttributeView(file,UserDefinedFileAttributeView.class);
String name = "user.mimetype";
ByteBuffer buf = ByteBuffer.allocate(view.size(name));
view.read(name, buf);
buf.flip();
String value = Charset.defaultCharset().decode(buf).toString();
如果您將'UserDefinedFileAttributeView'與不支持POSIX擴展屬性(即FAT)的文件系統一起使用會發生什麼?莫名其妙地模仿? – 2013-04-09 16:29:57
我無法找到一個完整的列表,[這](http://stackoverflow.com/questions/15319586/what-file-sytems-support-java-userdefinedfileattributeview)答案列出了幾個文件系統。我想唯一能找到的方法就是在FAT上嘗試一下,看看會發生什麼。 – 2013-04-09 16:32:53
您應經常檢查,如果文件系統支持UserDefinedFileAttributeView
您要設置特定文件你可以簡單地調用此
Files.getFileStore(Paths.get(path_to_file))).supportsFileAttributeView(UserDefinedFileAttributeView.class);
從我的經驗來看,UserDefinedFileAttributeView
沒有在FAT *支持和HFS +(適用於Mac)文件系統
對於我創建了一個額外的元數據文件,每個文件類似的要求,即名爲'report.pdf'的文件具有包含元數據的'report.pdf.meta'文件。不像使用擴展屬性那樣花哨,但它工作。 – 2013-04-09 16:39:01