为获取用户为这一文件定义的属性名,我们在视图上调用 list() 方法:
List<String> attribList = userView.list();
一旦我们拥有了想得到相关值的特定属性名,就为该值分配一个大小合适的 ByteBuffer,然后调用视图的 read(String, ByteBuffer) 方法:
ByteBuffer attribValue = ByteBuffer.allocate(userView.size(attribName));
userView.read(attribName, attribValue);
userView.read(attribName, attribValue);
attribValue 现在包含了为那一特定属性所存储的任何数据。想设置自己的属性,只需创建 ByteBuffer 并按需填入数据,然后在视图上调用 write(String, ByteBuffer) 方法:
userView.write(attribName, attribValue);
写入属性,或者创建该属性,或者利用相同的名字覆盖已有的属性。
这样,我们结束第三个而且是最后一个例子。演示这四个属性视图(BasicFileAttributeView、FileOwnerAttributeView、FileStoreSpaceAttributeView、以及 UserDefinedAttributeView)的完整示例代码包含在 下载 的示例代码中。
结束语
除了本文所提到的以外,还有很多其他的 NIO.2 文件 API。Java 7 具有创建、检查、并修改符号链接的新功能。还有新的类,来允许访问文件系统的低级信息,并支持提供者(称为 FileSystem 和 FileStore)访问任何想要访问的文件系统。
总之,NIO.2 为 Java 开发人员提供了一系列简单、兼容、并且功能强大的 API,来与文件系统交互。其目的是抽取处理文件和目录时所涉及的复杂的、平台特定的细节,并能较好地为程序员提供更强大的功能和更多的灵活性。