20.3.4 文件属性接口
与文件关联的是一套属性。这些属性包括文件的创建时间、最后一次修改时间、文件是否是目录以及文件的大小等内容。NIO将文件属性组织到几个接口中。属性是通过在java.nio.file.attribute包中定义的接口层次表示的。顶部是BasicFileAttributes,该接口封装了在各种文件系统中都通用的一组属性。表20-8显示了BasicFileAttributes接口定义的方法。
表20-8 BasicFileAttributes接口定义的方法
有两个接口派生自BasicFileAttributes:DosFileAttributes和PosixFileAttributes。DosFile-Attributes描述了与FAT文件系统相关的那些属性,FAT文件系统最初是由DOS定义的。DosFileAttributes接口定义的方法如表20-9所示。
表20-9 DosFileAttributes接口定义的方法
PosixFileAttributes封装了POSIX标准定义的属性(POSIX代表Portable Operating System Interface,即轻便型操作系统接口),该接口定义的方法如表20-10所示。
表20-10 PosixFileAttributes接口定义的方法
访问文件属性的方式有多种。第一种方式,可以通过readAttributes()方法获取用于封装文件属性的对象,该方法是由Files类定义的静态方法,它的其中一种形式如下所示:
访问文件属性的第二种方式是调用Files类定义的getFileAttributeView()方法。NIO定义了一些属性视图接口,包括AttributeView、BasicFileAttributeView、DosFileAttributeView、PosixFileAttributeView等等。尽管在本章不会使用这些属性视图,但是在有些情况下会发现它们很有帮助。
在有些情况下,不需要直接使用文件属性接口,因为Files类提供了一些访问文件属性的静态的便利方法。例如File类提供了isHidden()和isWritable()这类方法。
并不是所有的文件系统都支持所有可能的属性,理解这一点很重要。例如,DOS文件属性应用于最初由DOS定义的FAT文件系统。广泛应用于各种文件系统的属性是由BasicFileAttributes接口描述的。因此,在本章的例子中使用这些属性。