BasicFileAttributes与Java中的BasicFileAttributeView

时间:2013-05-04 12:25:30

标签: java attributes metadata

这两个界面有什么区别? BasicFileAttributes vs BasicFileAttributeView

据我所知,它们用于从文件中检索基本元数据,但实际上彼此之间有什么不同?

编辑:我之前的意思是,在以下示例中,2个接口可互换使用。有什么不同吗?除了首先要使用视图访问属性,你必须调用.readAttributes()方法吗?

BasicFileAttributeView bs = Files.getFileAttributeView(path, BasicFileAttributeView.class);
        BasicFileAttributes bfa = Files.readAttributes(path, BasicFileAttributes.class);

1 个答案:

答案 0 :(得分:0)

接口只不过是他们描述的签名。因此,这两个接口之间的区别在于,它们需要实现其他签名的方法。

如果您有BasicFileAttributeView实例,则可以使用readAttributes()获取BasicFileAttributes。如果您没有BasicFileAttributeView实例,则可以使用Files.getFileAttributeView获取它。即使您无法获取FileAttributeView的每个子类的每个实例,也可以保证获得一个。

示例:

BasicFileAttributeView  bfav    = Files.getFileAttributeView(
                                   FileSystems.getDefault().getPath("/dev/null"),
                                   BasicFileAttributeView.class
                                  );
BasicFileAttributes     bfa     = bfav.readAttributes();
System.out.println(new Date(bfa.lastAccessTime().toMillis()));
  1. 我们获得了默认的FileSystem,以便我们可以在下一步中使用它。
  2. 我们使用FileSystem获取Path,以便我们可以在下一步中使用它
  3. 我们使用Path获取 BasicFileAttributeView 表示读取BasicFileAttribute 的能力),以便......
  4. 我们使用BasicFileAttributeView获取BasicFileAttribute,以便......
  5. 我们得到lastAccessTime(一个FileTime),...
  6. 我们得到之前的毫秒数
  7. 我们从上一个
  8. 获取日期