模块 java.base

接口 PosixFileAttributeView

所有父级接口:
AttributeView , BasicFileAttributeView , FileAttributeView , FileOwnerAttributeView

public interface PosixFileAttributeView extends BasicFileAttributeView , FileOwnerAttributeView
一种文件属性视图,提供通常与文件系统上的文件关联的文件属性视图,这些文件系统由实现可移植操作系统接口 (POSIX) 系列标准的操作系统使用。

实现 POSIX 系列标准的操作系统通常使用具有文件 ownergroup-owner 和相关 access permissions 的文件系统。此文件属性视图提供对这些属性的读写访问。

readAttributes 方法用于读取文件的属性。文件 owner UserPrincipal 表示,这是文件所有者的身份,用于访问控制。 group-owner GroupPrincipal 表示,是组所有者的身份,其中组是为管理目的而创建的身份,以确定组成员的访问权限。

permissions 属性是一组访问权限。此文件属性视图提供对 PosixFilePermission 类定义的九个权限位的访问。这九个权限位决定了文件所有者、组和其他人(其他人指除所有者和组成员以外的身份)的 readwriteexecute 访问权限。某些操作系统和文件系统可能会提供额外的权限位,但在本版本中此类未定义对这些其他位的访问。

使用示例:假设我们需要打印出文件的所有者和访问权限:

   Path file = ...
   PosixFileAttributes attrs = Files.getFileAttributeView(file, PosixFileAttributeView.class)
     .readAttributes();
   System.out.format("%s %s%n",
     attrs.owner().getName(),
     PosixFilePermissions.toString(attrs.permissions()));
 

动态访问

在需要动态访问文件属性的地方,该属性视图支持的属性由BasicFileAttributeView FileOwnerAttributeView 定义,此外还支持以下属性:

支持的属性
Name Type
"permissions" Set <PosixFilePermission >
“团体” GroupPrincipal

getAttribute 方法可用于读取任何这些属性,或任何由 BasicFileAttributeView 定义的属性,就像调用 readAttributes() 方法一样。

setAttribute 方法可用于更新文件的上次修改时间、上次访问时间或创建由 BasicFileAttributeView 定义的时间属性。它还可以用于更新权限、所有者或组所有者,就像分别调用 setPermissions setOwner setGroup 方法一样。

设置初始权限

支持此属性视图的实现也可能支持在创建文件或目录时设置初始权限。初始权限提供给 createFile createDirectory 方法作为 FileAttribute name "posix:permissions"value 是一组权限。以下示例在创建文件时使用asFileAttribute 方法构造一个FileAttribute

   Path path = ...
   Set<PosixFilePermission> perms =
     EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ);
   Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
 

如果在文件创建时设置了访问权限,则权限的实际值可能与属性对象的值不同。这样做的原因是特定于实现的。例如,在 UNIX 系统上,一个进程有一个 umask 会影响新创建文件的权限位。如果实现支持访问权限的设置,并且底层文件系统支持访问权限,则要求实际访问权限的值等于或小于提供给createFile createDirectory 方法的属性值.换句话说,该文件可能比请求的更安全。

自从:
1.7