是否可以使用Java在文件上设置自定义元数据?

是否可以在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); 

根据我的经验,FAT *和HFS +(用于MAC)文件系统不支持UserDefinedFileAttributeView