-
- All Superinterfaces:
-
AttributeView
,BasicFileAttributeView
,FileAttributeView
,FileOwnerAttributeView
public interface PosixFileAttributeViewextends BasicFileAttributeView, FileOwnerAttributeView
文件属性视图,提供通常与实现可移植操作系统接口(POSIX)标准系列的操作系统所使用的文件系统上的文件相关联的文件属性的视图。实现POSIX系列标准的操作系统通常使用具有文件所有者 , 组所有者和相关访问权限的文件系统。 此文件属性视图提供对这些属性的读写访问权限。
readAttributes
方法用于读取文件的属性。 该文件owner
由a表示UserPrincipal
是用于访问控制的目的,该文件的所有者的身份。 的group-owner
,用a表示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()));
动态访问
如果需要动态访问文件属性,则此属性视图支持的属性如
BasicFileAttributeView
和FileOwnerAttributeView
所定义,此外,还支持以下属性:Name Type "permissions" Set
<PosixFilePermission
>"group" GroupPrincipal
getAttribute
方法可用于读取任何这些属性,或BasicFileAttributeView
定义的任何属性, 就像调用readAttributes()
方法一样。setAttribute
方法可用于更新文件的上次修改时间,上次访问时间或创建时间属性,如BasicFileAttributeView
所定义。 它也可用于通过调用来更新权限,拥有者,或好象基的所有者setPermissions
,setOwner
,和setGroup
分别方法。设置初始权限
支持此属性视图的实现也可能支持在创建文件或目录时设置初始权限。 初始权限以
FileAttribute
(name
"posix:permissions"
和value
(权限集)提供给createFile
或createDirectory
方法。 以下示例在创建文件时使用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
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 String
name()
返回属性视图的名称。PosixFileAttributes
readAttributes()
将基本文件属性读取为批量操作。void
setGroup(GroupPrincipal group)
更新文件组所有者。void
setPermissions(Set<PosixFilePermission> perms)
更新文件权限。-
声明方法的接口 java.nio.file.attribute.BasicFileAttributeView
setTimes
-
声明方法的接口 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
方法拒绝对该文件的写访问权。
-
-