3

我正在尝试将用户定义的属性设置为文件,例如version=1文件 foo.txt。这样我version以后可以检索该属性。

我看到 Java NIO 包提供了这样的机制,我遵循了这个文档。但是,我试图在我的 Unix 操作系统中运行它,它说空指针异常,我也看到博客说它 是特定于窗口的。那么如何在 Unix 中将属性写入文件?

UserDefinedFileAttributeView userDefinedFAView = Files
                .getFileAttributeView(path, UserDefinedFileAttributeView.class);
        List<String> attributeList = userDefinedFAView.list();
        System.out.println("User Defined Attribute List Size Before Adding: "
                + attributeList.size());

        // set user define attribute
        String attributeName = "version";
        String attributeValue = "1";
        userDefinedFAView.write(attributeName,
                Charset.defaultCharset().encode(attributeValue));

整个源代码如下: https ://gist.github.com/ajayramesh23/e21d6159d8271fe0a4cfaf7209f6fb74

源代码参考博客:http: //javapapers.com/java/file-attributes-using-java-nio/

请提供在 Java 7 或更高版本中设置文件属性的最佳方法。

另外,我看到 Java Doc 在下面的注释中提到了这一点:

笔记:

在 Linux 中,您可能必须启用扩展属性才能使用户定义的属性起作用。如果在尝试访问用户定义的属性视图时收到 UnsupportedOperationException,则需要重新挂载文件系统。以下命令使用 ext3 文件系统的扩展属性重新挂载根分区。如果此命令不适用于您的 Linux 风格,请查阅文档。

$ sudo mount -o remount,user_xattr / If you want to make the change permanent, add an entry to /etc/fstab.

那么如何在不执行上述说明的情况下设置用户定义的属性。

4

0 回答 0