Module java.base

Interface PosixFileAttributeView

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

public interface PosixFileAttributeView extends BasicFileAttributeView, FileOwnerAttributeView
一个文件属性视图,提供了一个视图,用于查看与实现便携操作系统接口(POSIX)系列标准的操作系统上的文件通常相关的文件属性。

实现 POSIX 系列标准的操作系统通常使用具有文件 所有者组所有者和相关 访问权限的文件系统。此文件属性视图提供对这些属性的读取和写入访问。

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

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

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

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

动态访问

当需要动态访问文件属性时,此属性视图支持的属性如 BasicFileAttributeViewFileOwnerAttributeView 中定义的属性,以及以下属性:

支持的属性
名称 类型
"permissions" Set<PosixFilePermission>
"group" GroupPrincipal

可以使用 getAttribute 方法来读取这些属性中的任何一个,或者读取 BasicFileAttributeView 中定义的任何属性,就像调用 readAttributes() 方法一样。

可以使用 setAttribute 方法来更新文件的最后修改时间、最后访问时间或创建时间属性,如 BasicFileAttributeView 中定义的。也可以使用该方法来更新权限、所有者或组所有者,就像调用 setPermissionssetOwnersetGroup 方法一样。

设置初始权限

支持此属性视图的实现还可以在创建文件或目录时支持设置初始权限。初始权限作为一个带有 FileAttribute,其中 name"posix:permissions"value 为权限集合,提供给 createFilecreateDirectory 方法。以下示例使用 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。如果实现支持设置访问权限,并且底层文件系统支持访问权限,则要求实际访问权限的值将等于或小于提供给 createFilecreateDirectory 方法的属性的值。换句话说,文件可能比请求的更安全。

自版本:
1.7