Java nio AclEntry。如何知道主体是组还是用户

Java nio AclEntry。如何知道主体是组还是用户,java,permissions,acl,Java,Permissions,Acl,我使用java.nio.file.attribute.AclFileAttributeView和AclEntry来收集系统上的所有文件ACL。事情很简单,直到我意识到库没有方法检查主体是用户还是组 该函数只需要返回具有读取权限的用户而不是组,您有什么建议吗 这是我的代码草案 public String[] getViewer(String path) { // List of the ACL enum of read permission List<AclEntryPerm

我使用java.nio.file.attribute.AclFileAttributeView和AclEntry来收集系统上的所有文件ACL。事情很简单,直到我意识到库没有方法检查主体是用户还是组

该函数只需要返回具有读取权限的用户而不是组,您有什么建议吗

这是我的代码草案

public String[] getViewer(String path)
{
    // List of the ACL enum of read permission
    List<AclEntryPermission> readAcl = new ArrayList<AclEntryPermission>();
    readAcl.add(AclEntryPermission.READ_ATTRIBUTES);
    readAcl.add(AclEntryPermission.READ_DATA);
    readAcl.add(AclEntryPermission.SYNCHRONIZE);
    readAcl.add(AclEntryPermission.READ_NAMED_ATTRS);

    AclFileAttributeView acl = Files.getFileAttributeView(Paths.get(path),
            AclFileAttributeView.class);
    List<String> names = new ArrayList<String>();
    if (acl!=null)
    {   
        try {
            List<AclEntry> aclList = acl.getAcl();
            for (AclEntry entry: aclList)
            {
                //System.out.println(a.principal() + ":");
                //System.out.println(entry.permissions() + "\n");
                if (entry.permissions().containsAll(readAcl))
                {   
                    // Only add principal if it is not a group
                    if (entry.principal.isGroup())
                    names.add(entry.principal().getName());
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    return names.toArray(new String[]{});
}

为了回答您的问题,可以检查GroupPrincipal。你可以用

if (entry.principal() instanceof GroupPrincipal)
检查


但是,我看不出你能对这个检查结果做些什么。

谢谢,我用它来在广告中查找群组。