Java Files 是如何管理文件元数据的
什么是元数据
元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
核心类图
Files操作文件、目录、或其他文件,大部分情况下,方法委托给FileSystemProvider。
FileAttributeView不同的文件系统对于元数据属性有不同的概念,因此把不同的属性分组到不同的view中,每一个view对应一种特定的文件系统实现。
1、BasicFileAttributeView 所有文件系统支持的属性
2、DosFileAttributeView Dos家族属性支持
3、PosixFileAttributeView POSIX家族属性支持
4、FileOwnerAttributeView 所有文件系统owner支持
5、AclFileAttributeView Access Control Lists (ACL)支持
6、UserDefinedFileAttributeView 用户自定义的元数据支持。(第三方实现)
BasicFileAttributes封装文件系统的元数据属性。如:PosixFileAttributes,POSIX家族标准元数据属性。同时,在获取操作系统相关的元数据时,方法委托给UnixNativeDispatcher。
API举例
获取单一属性Files.getOwner(file)为提高性能,同时获取多个属性Files.readAttributes(file,"posix:owner,group")
获取BasicFileAttributes封装的属性BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);System.out.println(attrs.creationTime());System.out.println(attrs.lastModifiedTime());System.out.println(attrs.lastAccessTime());
获取PosixFileAttributes封装的属性PosixFileAttributes pfa = Files.readAttributes(file,PosixFileAttributes.class);System.out.format("%s %s %s%n", pfa.owner().getName(), pfa.group().getName(), PosixFilePermissions.toString(pfa.permissions()));