2013-04-23 48 views
1

當我將新的UserDefinedFileAttributeView屬性添加到文件時,Java存儲此信息的位置在哪裏? 目錄中沒有其他文件,當我查看文件屬性時,該文件沒有任何新的屬性或詳細信息。Java UserDefinedFileAttributeView

我的代碼:

String versionAttrName = "report.version"; 
try {   
    Path path = FileSystems.getDefault().getPath(filePath, ""); 
    UserDefinedFileAttributeView view = Files.getFileAttributeView(path, UserDefinedFileAttributeView.class); 
    view.write(versionAttrName, Charset.defaultCharset().encode(newVersion)); 
} catch (IOException e) { 
    System.out.println("7 - Error saving version to file! - "+ filePath + " - " + e.getMessage()); 
} 
+0

你檢查你的用戶目錄和'programdata'目錄......我建議做一個硬盤搜索,會找到文件的最快方法: ) – 2013-04-23 14:46:54

+0

想要搜索什麼?哈哈,我不知道Java會使用什麼文件名/類型 – gwin003 2013-04-23 14:52:19

回答

2

這些元數據使用文件系統的 「擴展文件屬性」(見wikipedia)存儲。

我找不到任何全面支持的文件系統列表(絕對是JVM特有的),因此您應該在您計劃支持的所有平臺上進行測試。但this答案列出了一些和this提到了一些關於Linux的細節。希望這可以幫助。

0

這取決於您正在運行的平臺。

按照OpenJDK的文檔:The details of such emulation are highly implementation specific and therefore not specified.

在Windows然而測試表明它使用NTFS備用數據流:

PS C:\test> Get-Item -Path C:\test\asdf.txt -stream * 


    FileName: C:\test\asdf.txt 

Stream     Length 
------     ------ 
:$DATA      0 
myaltstream    1337 

在Linux上使用擴展屬性。

不知道別人 - 希望這有助於:)