[NIO.2]제1 6 편 속성 보기 의 ACL View
Files.getFileAttributeView()를 사용 하여 ACL 가 져 오기
ACL 의 내용 을 본 적 이 없다 면 다음 코드 를 사용 해 보 세 요.Files.getFileAttributeView()를 사용 하여 ACL 을 가 져 왔 습 니 다.이 방법 을 사용 한 반환 값 형식 은? List
import java.io.IOException;
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.AclFileAttributeView;
import java.util.List;
…
List acllist = null;
Path path = Paths.get("C:/rafaelnadal/tournaments/2009", "BNP.txt");
AclFileAttributeView aclview = Files.getFileAttributeView(path, AclFileAttributeView.class);
try {
acllist = aclview.getAcl();
} catch (IOException e) {
System.err.println(e);
}
Files.getAttribute()를 사용 하여 ACL 가 져 오기
일반적인 방법 getAttribute()를 사용 하여 ACL 을 가 져 올 수 있 습 니 다:
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
…
List acllist = null;
Path path = Paths.get("C:/rafaelnadal/tournaments/2009", "BNP.txt");
try {
acllist = (List) Files.getAttribute(path, "acl:acl", NOFOLLOW_LINKS);
} catch (IOException e) {
System.err.println(e);
}
ACL 속성 보 기 는 다음 속성 명 을 지원 합 니 다.
ACL 레코드 읽 기
앞의 두 가지 예 는 ACL 목록 을 가 져 오 는 방법 을 보 여 주 었 습 니 다.반환 값 은 모두 AclEntry 대상 을 저장 하 는 List 입 니 다.AclEntry 대상 은 ACL 의 입구 에 대응 합 니 다.각 AclEntry 대상 은 아래 네 부분 으로 구성 되 어 있 습 니 다.
for (AclEntry aclentry : acllist) {
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("Principal: " + aclentry.principal().getName());
System.out.println("Type: " + aclentry.type().toString());
System.out.println("Permissions: " + aclentry.permissions().toString());
System.out.println("Flags: " + aclentry.flags().toString());
}
다음은 윈도 7 에서 실 행 된 결과 입 니 다.
++++++++++++++++++++++++++++++++++++++++++++++++++++
Principal: BUILTIN\Administrators
Type: ALLOW
Permissions: [WRITE_OWNER, READ_ACL, EXECUTE, WRITE_NAMED_ATTRS, READ_ATTRIBUTES,
READ_NAMED_ATTRS, WRITE_DATA, WRITE_ACL, READ_DATA, WRITE_ATTRIBUTES, SYNCHRONIZE, DELETE,
DELETE_CHILD, APPEND_DATA]
Flags: []
++++++++++++++++++++++++++++++++++++++++++++++++++++
Principal: NT AUTHORITY\SYSTEM
Type: ALLOW
Permissions: [WRITE_OWNER, READ_ACL, EXECUTE, WRITE_NAMED_ATTRS, READ_ATTRIBUTES,
READ_NAMED_ATTRS, WRITE_DATA, WRITE_ACL, READ_DATA, WRITE_ATTRIBUTES, SYNCHRONIZE, DELETE,
DELETE_CHILD, APPEND_DATA]
Flags: []
++++++++++++++++++++++++++++++++++++++++++++++++++++
Principal: NT AUTHORITY\Authenticated Users
Type: ALLOW
Permissions: [READ_ACL, EXECUTE, READ_DATA, WRITE_ATTRIBUTES, WRITE_NAMED_ATTRS,
SYNCHRONIZE, DELETE, READ_ATTRIBUTES, READ_NAMED_ATTRS, WRITE_DATA, APPEND_DATA]
Flags: []
++++++++++++++++++++++++++++++++++++++++++++++++++++
Principal: BUILTIN\Users
Type: ALLOW
Permissions: [READ_ACL, EXECUTE, READ_DATA, SYNCHRONIZE, READ_ATTRIBUTES, READ_NAMED_ATTRS]
Flags: []
ACL 에 새 입 구 를 추가 합 니 다.
AclEntry.Builder 의 build()방법 으로 새로운 ACL 입 구 를 만 들 수 있 습 니 다.사용자 에 게 새로운 접근 권한 을 추가 하려 면 다음 절 차 를 통 해:
import java.io.IOException;
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.List;
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
…
try {
//Lookup for the principal
UserPrincipal user = path.getFileSystem().getUserPrincipalLookupService()
//Get the ACL view
AclFileAttributeView view = Files.getFileAttributeView(path,
AclFileAttributeView.class);
//Create a new entry
AclEntry entry = AclEntry.newBuilder().setType(AclEntryType.ALLOW).
setPrincipal(user).setPermissions(AclEntryPermission.READ_DATA,
AclEntryPermission.APPEND_DATA).build();
//read ACL
List acl = view.getAcl();
//Insert the new entry
acl.add(0, entry);
//rewrite ACL
view.setAcl(acl);
//or, like this
//Files.setAttribute(path, "acl:acl", acl, NOFOLLOW_LINKS);
} catch (IOException e) {
System.err.println(e);
}
메모:위의 예 에서 사용자 apress 를 사 용 했 습 니 다.만약 당신 의 기계 에 이 사용자 가 없다 면 자바.nio.file.attribute.UserPrincipal NotFoundException 이상 을 던 질 것 입 니 다.
위의 코드 는 이미 존재 하 는 파일 의 ACL 에 새로운 입 구 를 추가 하 는 데 사용 할 수 있다.파일 을 새로 만 들 때 도 사용 할 수 있 습 니 다.
메모:AclFileAttributeView 는 FileOwner AttributeView 에서 계승 되 기 때문에 getOwner()와 setOwner()방법 을 직접 호출 할 수 있 습 니 다.
글 의 출처:
http://www.aptusource.org/2014/03/nio-2-acl-view/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.