-
- All Superinterfaces:
-
AttributeView
,BasicFileAttributeView
,FileAttributeView
,FileOwnerAttributeView
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()));
动态访问
在需要动态访问文件属性的情况下,此属性视图支持的属性由
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
方法的属性的值。 换句话说,该文件可能比请求更安全。- 从以下版本开始:
- 1.7
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 String
name()
返回属性视图的名称。PosixFileAttributes
readAttributes()
读取大量操作的基本文件属性。void
setGroup(GroupPrincipal group)
更新文件组所有者。void
setPermissions(Set<PosixFilePermission> perms)
更新文件权限。-
Methods inherited from interface java.nio.file.attribute.BasicFileAttributeView
setTimes
-
Methods inherited from interface java.nio.file.attribute.FileOwnerAttributeView
getOwner, setOwner
-
-
-
-
方法详细信息
-
name
String name()
返回属性视图的名称。 此类型的属性视图名称为"posix"
。- Specified by:
-
name
在接口AttributeView
- Specified by:
-
name
在接口BasicFileAttributeView
- Specified by:
-
name
在接口FileOwnerAttributeView
- 结果
- 属性视图的名称
-
readAttributes
PosixFileAttributes readAttributes() throws IOException
说明从接口BasicFileAttributeView
复制读取大量操作的基本文件属性。如果所有文件属性都被读取为相对于其他文件系统操作的原子操作,则是实现特定的。
- Specified by:
-
readAttributes
在接口BasicFileAttributeView
- 结果
- 文件属性
- 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 在默认提供程序的情况下,将安装一个安全管理器,它将拒绝RuntimePermission
("accessUserInformation")
或其checkRead
方法拒绝对该文件的读取访问。
-
setPermissions
void setPermissions(Set<PosixFilePermission> perms) throws IOException
更新文件权限。- 参数
-
perms
- 新的权限集 - 异常
-
ClassCastException
- 如果集合包含不是类型为PosixFilePermission
-
IOException
- 如果发生I / O错误 -
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,并且它拒绝RuntimePermission
("accessUserInformation")
或其checkWrite
方法拒绝对该文件的写访问。
-
setGroup
void setGroup(GroupPrincipal group) throws IOException
更新文件组所有者。- 参数
-
group
- 新的文件组所有者 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并安装了安全管理器,它将拒绝RuntimePermission
("accessUserInformation")
或其checkWrite
方法拒绝对该文件的写入访问。
-
-