public interface PosixFileAttributeView extends BasicFileAttributeView, FileOwnerAttributeView
实现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()));
在需要动态访问文件属性的情况下,此属性视图支持的属性由BasicFileAttributeView
和FileOwnerAttributeView
定义,此外还支持以下属性:
Name Type "permissions" Set
<PosixFilePermission
>"group" 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
方法的属性的值。 换句话说,该文件可能比请求更安全。
Modifier and Type | Method and Description |
---|---|
String |
name()
返回属性视图的名称。
|
PosixFileAttributes |
readAttributes()
读取大量操作的基本文件属性。
|
void |
setGroup(GroupPrincipal group)
更新文件组所有者。
|
void |
setPermissions(Set<PosixFilePermission> perms)
更新文件权限。
|
setTimes
getOwner, setOwner
String name()
"posix"
。
name
在接口
AttributeView
name
中的
BasicFileAttributeView
name
在界面
FileOwnerAttributeView
PosixFileAttributes readAttributes() throws IOException
BasicFileAttributeView
如果所有文件属性都被读取为相对于其他文件系统操作的原子操作,则是实现特定的。
readAttributes
中的
BasicFileAttributeView
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,它拒绝RuntimePermission
("accessUserInformation")或其checkRead
方法拒绝对该文件的读取访问。
void setPermissions(Set<PosixFilePermission> perms) throws IOException
perms
- 新的权限集
ClassCastException
- 如果集合包含不是类型
PosixFilePermission
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,它拒绝RuntimePermission
("accessUserInformation")或其checkWrite
方法拒绝对该文件的写访问。
void setGroup(GroupPrincipal group) throws IOException
group
- 新的文件组所有者
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,它将拒绝RuntimePermission
("accessUserInformation")或其checkWrite
方法拒绝对该文件的写入访问。