Module  java.base

Interface PosixFileAttributeView

  • All Superinterfaces:
    AttributeViewBasicFileAttributeViewFileAttributeViewFileOwnerAttributeView


    public interface PosixFileAttributeView
    extends BasicFileAttributeView, FileOwnerAttributeView
    文件属性视图,提供通常与实现便携式操作系统接口(POSIX)系列标准的操作系统使用的文件系统上的文件关联的文件属性视图。

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

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

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

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

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

    动态访问

    在需要动态访问文件属性的情况下,此属性视图支持的属性由BasicFileAttributeViewFileOwnerAttributeView定义,此外还支持以下属性:

    Supported attributes
    Name Type
    "permissions" Set<PosixFilePermission>
    "group" GroupPrincipal

    getAttribute方法可用于读取这些属性中的任何一个,或BasicFileAttributeView定义的任何属性,如同通过调用readAttributes()方法一样。

    setAttribute方法可用于更新文件的上一次修改时间,上次访问时间或创建由BasicFileAttributeView定义的时间属性。 它也可用于通过调用来更新权限,拥有者,或好象基的所有者setPermissionssetOwner ,和setGroup分别方法。

    设置初始权限

    支持此属性视图的实现也可以支持在创建文件或目录时设置初始权限。 初始权限提供给createFilecreateDirectory方法作为FileAttributename "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 如果实现支持访问权限的设置,并且底层文件系统支持访问权限,则需要实际访问权限的值将等于或小于提供给createFilecreateDirectory方法的属性的值。 换句话说,该文件可能比请求更安全。

    从以下版本开始:
    1.7