1

当我向文件添加新UserDefinedFileAttributeView属性时,Java 将这些信息存储在哪里?目录中没有其他文件,当我查看文件属性时,该文件没有任何新属性或详细信息。

我的代码:

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());
}
4

2 回答 2

2

这些元数据使用文件系统的“扩展文件属性”存储(参见维基百科)。

我找不到任何受支持的文件系统的完整列表(它肯定是特定于 JVM 的),因此您绝对应该在您计划支持的所有平台上进行测试。但是这个答案列出了一些,并且提到一些关于 Linux 的细节。希望这可以帮助。

于 2013-05-18T13:06:18.090 回答
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 上,它使用扩展属性。

不确定其他人-希望这会有所帮助:)

于 2014-04-18T06:08:05.113 回答