9

我需要将自定义数据与文件系统中的文件一起存储(每个文件大约 50 个字节)。我没有任何其他存储来保存数据,也无法为此创建额外的文件。这些是我的要求,我无法改变。

我发现这可以使用 UserDefinedFileAttributeView 类来完成。

哪些文件系统支持此功能?NTFS、FAT、Linux 上的任何其他文件系统?

数据实际存储在哪里以及它的可靠性如何?

4

3 回答 3

5

我已经通过 UserDefinedFileAttributeView 测试了以下文件系统支持自定义属性:NTFS、Ext4、ZFS。其他流行的文件系统也可能支持它们。在以下文件系统 FAT32、HFS+ 中未找到支持。

于 2013-04-05T08:54:48.510 回答
5

我个人发现仅仅依靠一些列表是不够的。总有一种方法可以询问底层实现、支持哪些视图以及是否支持任何具体视图。查看以下代码:

final FileSystem defaultFS = FileSystems.getDefault();

for (String fileAttributeView : defaultFS.supportedFileAttributeViews()) {
    System.out.println("Default file system supports: " + fileAttributeView);
}

输出:

Default file system supports: acl
Default file system supports: basic
Default file system supports: owner
Default file system supports: user
Default file system supports: dos

您可以在我关于NIO.2 中文件属性的文章中阅读更多内容

于 2014-01-08T21:21:23.797 回答
2

我还没有找到所有受支持文件系统的完整列表。看起来支持许多现代文件系统(ntfs、ext*)。正确使用这些用户定义属性的唯一方法是supportsFileAttributeView在读取和写入数据之前调用。

您也可以尝试Preferences API将数据存储在一些 JVM 管理的存储中,因此从技术上讲,您不会创建任何文件。

于 2013-03-10T06:45:17.980 回答