广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州JAVA ACL文件权限是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-04-14分类:Java技术浏览:776


导读:JAVA ACL文件权限是什么?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

JAVA ACL文件权限是什么?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

Microsoft Windows上支持ACL类型文件属性。

ACL由访问控制条目的有序列表组成。每个条目由一个UserPrincipal,访问类型和对对象的访问级别组成。

AclEntry类表示ACL中的条目。

使用AclFileAttributeView的getAcl()和setAcl()方法获取和设置文件的AclEntry列表。

以下代码获取名为C:\Java_Dev\test1.txt的文件的ACL条目列表:

Path  path   = Paths.get("C:\\Java_Dev\\test1.txt");
AclFileAttributeView view  = Files.getFileAttributeView(path,  AclFileAttributeView.class);
List<AclEntry> aclEntries = view.getAcl();

AclEntry类可以读取ACL条目的各种属性。其principal()方法返回UserPrincipal以标识用户或组。

permissions()从AclEntry返回一组AclEntryPermission对象以标识权限。

来自AclEntry的type()方法返回类型AclEntryType的枚举常量,例如ALARM,ALLOW,AUDIT和DENY,用于指示访问类型。

来自AclEntry的flags()方法返回一组AclEntryFlag枚举常量,其中包含ACL条目的继承标志。

以下代码显示如何读取文件C:\Java_Dev\test1.txt的ACL条目。

import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.attribute.AclEntry;import java.nio.file.attribute.AclEntryPermission;import java.nio.file.attribute.AclFileAttributeView;import java.util.List;import java.util.Set;public class Main {  public static void main(String[] args) throws Exception {
   Path path = Paths.get("C:\\Java_Dev\\test1.txt");
   AclFileAttributeView aclView = Files.getFileAttributeView(path,
       AclFileAttributeView.class);    if (aclView == null) {
     System.out.format("ACL view  is not  supported.%n");      return;
   }
   List<AclEntry> aclEntries = aclView.getAcl();    for (AclEntry entry : aclEntries) {
     System.out.format("Principal: %s%n", entry.principal());
     System.out.format("Type: %s%n", entry.type());
     System.out.format("Permissions are:%n");

     Set<AclEntryPermission> permissions = entry.permissions();      for (AclEntryPermission p : permissions) {
       System.out.format("%s %n", p);
     }

   }

 }
}

实例

以下代码显示如何为名为brice的用户添加新的ACL条目。它在C:\Java_Dev\test1.txt文件中为用户添加DATA_READ和DATA_ WRITE权限。

import static java.nio.file.attribute.AclEntryPermission.READ_DATA;import static java.nio.file.attribute.AclEntryPermission.WRITE_DATA;import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.attribute.AclEntry;import java.nio.file.attribute.AclEntryPermission;import java.nio.file.attribute.AclEntryType;import java.nio.file.attribute.AclFileAttributeView;import java.nio.file.attribute.UserPrincipal;import java.util.EnumSet;import java.util.List;import java.util.Set;public class Main {  public static void main(String[] args) throws Exception {
   Path path = Paths.get("C:\\Java_Dev\\test1.txt");

   AclFileAttributeView aclView = Files.getFileAttributeView(path,
       AclFileAttributeView.class);    if (aclView == null) {
     System.out.format("ACL view  is not  supported.%n");      return;
   }
   UserPrincipal bRiceUser = FileSystems.getDefault()
       .getUserPrincipalLookupService().lookupPrincipalByName("brice");

   Set<AclEntryPermission> permissions = EnumSet.of(READ_DATA, WRITE_DATA);

   AclEntry.Builder builder = AclEntry.newBuilder();
   builder.setPrincipal(bRiceUser);
   builder.setType(AclEntryType.ALLOW);
   builder.setPermissions(permissions);
   AclEntry newEntry = builder.build();

   List<AclEntry> aclEntries = aclView.getAcl();

   aclEntries.add(newEntry);

   aclView.setAcl(aclEntries);
 }
}

想了解更多关于Java的资讯吗?可以来惠州北大青鸟新方舟校区了解一下。

Java14.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表