这两个界面有什么区别? BasicFileAttributes vs BasicFileAttributeView
据我所知,它们用于从文件中检索基本元数据,但实际上彼此之间有什么不同?
编辑:我之前的意思是,在以下示例中,2个接口可互换使用。有什么不同吗?除了首先要使用视图访问属性,你必须调用.readAttributes()
方法吗?
BasicFileAttributeView bs = Files.getFileAttributeView(path, BasicFileAttributeView.class);
BasicFileAttributes bfa = Files.readAttributes(path, BasicFileAttributes.class);
答案 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()));