IAclFileAttributeView 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。
[Android.Runtime.Register("java/nio/file/attribute/AclFileAttributeView", "", "Java.Nio.FileNio.Attributes.IAclFileAttributeViewInvoker", ApiSince=26)]
public interface IAclFileAttributeView : IDisposable, Java.Interop.IJavaPeerable, Java.Nio.FileNio.Attributes.IFileOwnerAttributeView
[<Android.Runtime.Register("java/nio/file/attribute/AclFileAttributeView", "", "Java.Nio.FileNio.Attributes.IAclFileAttributeViewInvoker", ApiSince=26)>]
type IAclFileAttributeView = interface
interface IFileOwnerAttributeView
interface IFileAttributeView
interface IAttributeView
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 属性
- 实现
注解
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。
ACL 用于指定文件系统对象的访问权限。 ACL 是排序列表,每个列表 AclEntry access-control-entries都指定 UserPrincipal 该用户主体的访问级别和级别。 此文件属性视图定义#getAcl() getAcl#setAcl(List) setAcl基于 RFC 中指定的 ACL 模型读取和写入 ACL 的方法;3530:网络文件系统(NFS)版本 4 协议http://www.ietf.org/rfc/rfc3530.txt。 此文件属性视图适用于支持 NFSv4 ACL 模型的文件系统实现,或具有 <NFSv4 ACL 模型与文件系统使用的 ACL 模型之间的 em>定义完善的</em> 映射。 此类映射的详细信息依赖于实现,因此未指定。
此类还会扩展 FileOwnerAttributeView ,以便定义用于获取和设置文件所有者的方法。
当文件系统提供对一组 FileStore file-systems 非同质性的访问权限时,只有某些文件系统才支持 ACL。 该方法 FileStore#supportsFileAttributeView supportsFileAttributeView 可用于测试文件系统是否支持 ACL。
<h2>互操作性</h2>
RFC 3530 允许在支持 POSIX 定义的访问权限的平台上使用特殊用户标识。 特殊用户标识为“OWNER@”、“”GROUP@和“EVERYONE@”。 当同时 AclFileAttributeView 支持和 PosixFileAttributeView 支持时,这些特殊用户标识可以包含在读取或写入的 ACL AclEntry entries 中。 文件系统 UserPrincipalLookupService 可用于通过调用该方法来获取表示这些特殊标识的 AS UserPrincipal UserPrincipalLookupService#lookupPrincipalByName lookupPrincipalByName 。
<b>用法示例:</b> 假设我们希望将条目添加到现有 ACL 以授予“joe”访问权限:
// lookup "joe"
UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService()
.lookupPrincipalByName("joe");
// get view
AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class);
// create ACE to give "joe" read access
AclEntry entry = AclEntry.newBuilder()
.setType(AclEntryType.ALLOW)
.setPrincipal(joe)
.setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES)
.build();
// read ACL, insert ACE, re-write ACL
List<AclEntry> acl = view.getAcl();
acl.add(0, entry); // insert before any DENY entries
view.setAcl(acl);
<h2> 动态访问 </h2>
如果需要动态访问文件属性,则此属性视图支持的属性如下所示:<blockquote<>table class=“striped”<>caption style=“display:none”>Supported attributes</caption<>thead<>tr<>th scope=“col” Name </th<>scope=“col”>> Type </th></tr<>/thead<>tbody<>tr><th scope=“row”> “acl” </th><td>List<UserPrincipal/tr></tbody></table></blockquote>
该方法 Files#getAttribute getAttribute 可用于读取 ACL 或所有者属性,就像通过调用 #getAcl getAcl 或 #getOwner getOwner 方法一样。
该方法 Files#setAttribute setAttribute 可用于更新 ACL 或所有者属性,就像通过调用 #setAcl setAcl 或 #setOwner setOwner 方法一样。
<h2> 在创建文件 </h2 时设置 ACL>
支持此属性视图的实现还可能支持在创建文件或目录时设置初始 ACL。 初始 ACL 可以提供给方法,例如Files#createFile createFile或Files#createDirectory createDirectory作为FileAttribute对象FileAttribute#value valueFileAttribute#name name"acl:acl"列表AclEntry的方法。
如果实现支持与 NFSv4 定义的 ACL 模型不同的 ACL 模型,则在创建文件时设置初始 ACL 必须将 ACL 转换为文件系统支持的模型。 创建文件的方法应拒绝(通过引发 IOException IOException)任何尝试创建因翻译而不太安全的文件。
已在 1.7 中添加。
适用于 . 的 java.nio.file.attribute.AclFileAttributeViewJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
属性
| Acl |
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 |
| Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
| JniIdentityHashCode |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| Owner |
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 (继承自 IFileOwnerAttributeView) |
| PeerReference |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
方法
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| Name() |
返回属性视图的名称。 |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 (继承自 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
设置由 |
| UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 |
| GetJniTypeName(IJavaPeerable) |
支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。 |