IAclFileAttributeView 接口

定义

支持读取或更新文件的访问控制列表(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 UserPrincipalUserPrincipalLookupService#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&lt;AclEntry&gt; 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<></td></tr><tr><th scope=“row” “owner” <> /th><td/td>><<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 createFileFiles#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

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
Owner

支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。

(继承自 IFileOwnerAttributeView)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例。

(继承自 IJavaPeerable)

方法

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
Name()

返回属性视图的名称。

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。

GetJniTypeName(IJavaPeerable)

支持读取或更新文件的访问控制列表(ACL)或文件所有者属性的文件属性视图。

适用于