我需要将自定义数据与文件系统中的文件一起存储(每个文件大约 50 个字节)。我没有任何其他存储来保存数据,也无法为此创建额外的文件。这些是我的要求,我无法改变。
我发现这可以使用 UserDefinedFileAttributeView 类来完成。
哪些文件系统支持此功能?NTFS、FAT、Linux 上的任何其他文件系统?
数据实际存储在哪里以及它的可靠性如何?
我需要将自定义数据与文件系统中的文件一起存储(每个文件大约 50 个字节)。我没有任何其他存储来保存数据,也无法为此创建额外的文件。这些是我的要求,我无法改变。
我发现这可以使用 UserDefinedFileAttributeView 类来完成。
哪些文件系统支持此功能?NTFS、FAT、Linux 上的任何其他文件系统?
数据实际存储在哪里以及它的可靠性如何?
我已经通过 UserDefinedFileAttributeView 测试了以下文件系统支持自定义属性:NTFS、Ext4、ZFS。其他流行的文件系统也可能支持它们。在以下文件系统 FAT32、HFS+ 中未找到支持。
我个人发现仅仅依靠一些列表是不够的。总有一种方法可以询问底层实现、支持哪些视图以及是否支持任何具体视图。查看以下代码:
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 中文件属性的文章中阅读更多内容
我还没有找到所有受支持文件系统的完整列表。看起来支持许多现代文件系统(ntfs、ext*)。正确使用这些用户定义属性的唯一方法是supportsFileAttributeView
在读取和写入数据之前调用。
您也可以尝试Preferences API
将数据存储在一些 JVM 管理的存储中,因此从技术上讲,您不会创建任何文件。