是否可以在 File 实例上获取和设置自定义元数据?我想将通过我的系统处理的文件用作某种非常简单的数据库,其中每个文件都应包含其他自定义元数据,例如发件人的电子邮件、一些时间戳等。
它适用于内部系统,因此安全性不是问题。
在 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
您要设置的特定文件您可以简单地调用它
Files.getFileStore(Paths.get(path_to_file))).supportsFileAttributeView(UserDefinedFileAttributeView.class);
根据我的经验,UserDefinedFileAttributeView
FAT* 和 HFS+(对于 MAC)文件系统不支持