1.セットの所有者
ファイル管理の所有者
Files.getOwner()とFiles.setOwner()メソッド
UserPrincipalを管理するために、ファイルの所有者を使用するには
所有者は、(1)ファイルを変更します
インポートにjava.io.IOException; 輸入java.nio.file *。; 輸入java.nio.file.attribute.FileOwnerAttributeView。 輸入java.nio.file.attribute.UserPrincipal; 輸入java.nio.file.attribute.UserPrincipalLookupService。 パブリッククラスメイン{ パブリック静的無効メイン(文字列[] args){ パスパス= Paths.get( "/ WWW / test1.txtという")。 FileOwnerAttributeView foav = Files.getFileAttributeView(パス、 FileOwnerAttributeView.class); {試します 所有者のUserPrincipal = foav.getOwner()。 System.out.format( "%sの元の所有者は、%S%のnが" パス owner.getName())。 ファイルシステムFS = FileSystems.getDefault()。 UserPrincipalLookupService UPLS fs.getUserPrincipalLookupService =(); UserPrincipal newownerに= upls.lookupPrincipalByName( "ABC"); foav.setOwner(newownerに)。 UserPrincipal changedOwner = foav.getOwner()。 System.out.format( "%sの新しい所有者は、%S%のnが" パス changedOwner.getName())。 }キャッチ(IOExceptionを電子){ e.printStackTrace(); } } }
輸出
2.ACLファイルのパーミッション
ACLタイプは、Windowsのファイル属性でサポート
使用AclFileAttributeView
GETACL()メソッドは、ファイルのリストを取得するにはAclEntry
AclEntryリストSETACL()メソッドの設定ファイル
(1)ファイルeを読む:ACLエントリ/test1.txt
インポートにjava.io.IOException; 輸入java.nio.file.Files。 輸入java.nio.file.Path。 輸入java.nio.file.Paths。 輸入java.nio.file.attribute.AclEntry。 輸入java.nio.file.attribute.AclEntryPermission。 輸入java.nio.file.attribute.AclFileAttributeView。 輸入はjava.util.List; 輸入java.util.Set; パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ パスパス = Paths.get( "E:/test1.txt" ); AclFileAttributeView aclView = Files.getFileAttributeView(パス、 AclFileAttributeView。クラス); もし(aclView == NULL ){ System.out.format( "ACLビューがサポートされていません%のN。" ); 返します。 } してみてください{ 一覧 <AclEntry> aclEntries = aclView.getAcl(); 用{(aclEntries AclEntryエントリー) System.out.format( "プリンシパル:%S%のN" 、entry.principal())。 System.out.format( "タイプ:%S%のN" 、entry.type())。 System.out.format( "アクセス権があります。%N" )。 設定 <AclEntryPermission>権限= entry.permissions()。 用{(権限AclEntryPermissionのP) System.out.format( "%sの%のN" 、P); } } } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } }
出力は、
校長:BUILTIN \管理者(別名) タイプ:ALLOW アクセス権は、次のとおりです。 WRITE_DATA WRITE_OWNER APPEND_DATA SYNCHRONIZE WRITE_ATTRIBUTES EXECUTE READ_DATA DELETE_CHILD READ_ATTRIBUTES WRITE_NAMED_ATTRS WRITE_ACL DELETE READ_ACL READ_NAMED_ATTRS 校長:NT AUTHORITY \ SYSTEMの(まあ - 知られているグループ) タイプ:ALLOW アクセス権は、次のとおりです。 WRITE_DATA WRITE_OWNER APPEND_DATA SYNCHRONIZE WRITE_ATTRIBUTES EXECUTE READ_DATA DELETE_CHILD READ_ATTRIBUTES WRITE_NAMED_ATTRS WRITE_ACL DELETE READ_ACL READ_NAMED_ATTRS 校長:NT AUTHORITY \認証されたユーザー(まあ - 知られているグループ) タイプ:ALLOW アクセス権は、次のとおりです。 WRITE_DATA READ_ATTRIBUTES APPEND_DATA WRITE_NAMED_ATTRS SYNCHRONIZE WRITE_ATTRIBUTES EXECUTE DELETE READ_DATA READ_ACL READ_NAMED_ATTRS 校長:BUILTIN \ユーザー(エイリアス) タイプ:ALLOW アクセス権は、次のとおりです。 READ_ATTRIBUTES SYNCHRONIZE EXECUTE READ_DATA READ_ACL READ_NAMED_ATTRS
(2)指定したユーザーのための新しいACLエントリを追加
E:/test1.txtユーザーは、ABC DATA_READとDATA_書き込み権限を追加します
インポートにjava.io.IOException; 輸入java.nio.file.FileSystems。 輸入java.nio.file.Files。 輸入java.nio.file.Path。 輸入java.nio.file.Paths。 輸入 java.nio.file.attribute *。; 輸入java.util.EnumSet。 輸入はjava.util.List; 輸入java.util.Set; 輸入 静的java.nio.file.attribute.AclEntryPermission.READ_DATA。 輸入 静的java.nio.file.attribute.AclEntryPermission.WRITE_DATA。 パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ パスパス = Paths.get( "E:/test1.txt" ); AclFileAttributeView aclView = Files.getFileAttributeView(パス、 AclFileAttributeView。クラス); もし(aclView == NULL ){ System.out.format( "ACLビューがサポートされていません%のN。" ); 返します。 } してみてください{ UserPrincipal bRiceUser = FileSystems.getDefault() .getUserPrincipalLookupService()lookupPrincipalByName( "ABC" )。 設定 <AclEntryPermission>権限= EnumSet.of(READ_DATA、WRITE_DATA)。 AclEntry.Builderビルダー = AclEntry.newBuilder()。 builder.setPrincipal(bRiceUser)。 builder.setType(AclEntryType.ALLOW)。 builder.setPermissions(権限) AclEntry newEntry = builder.build()。 一覧 <AclEntry> aclEntries = aclView.getAcl(); aclEntries.add(newEntry)。 aclView.setAcl(aclEntries)。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } }
出力だけより
校長:hkgi-PCの\ abcの(ユーザー)
タイプ:ALLOW
権限は次のとおりです。
WRITE_DATA
READ_DATA
3.POSIXファイルのパーミッション
UNIXは、標準のPOSIXのファイル属性をサポートしています
PosixFilePermission 9列挙型定義された定数は、各コンポーネントの特権。
Xは、所有者、グループ、その他であることを特徴とする請求X_Y名前ナイン定数は、Yは、書き込み、実行、READです。
PosixFilePermissions形態の列挙定数のrwxrwxrwx PosixFilePermission文字列のセットを変換するためのtoString()メソッドを
PosixFileAttributeView setPermissions()メソッドは、アクセス権を設定するために使用されています
(1)出力/www/test1.txt権
インポートにjava.io.IOException; 輸入java.nio.file.Files。 輸入java.nio.file.Path。 輸入java.nio.file.Paths。 輸入 java.nio.file.attribute *。; 輸入java.util.Set; パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ パスパス = Paths.get( "/ WWW / test1.txtという" )。 PosixFileAttributeView posixView = Files.getFileAttributeView(パス、 PosixFileAttributeView。クラス); してみてください{ PosixFileAttributesはattribs = posixView.readAttributes()。 設定 <PosixFilePermission>権限= attribs.permissions()。 // のrwxrwxrwxの文字列形式にファイルのアクセス権を変換 文字列rwxFormPermissions = PosixFilePermissions.toString(権限) // パーミッションを印刷 するSystem.out.println(rwxFormPermissionsを)。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } }
出力
RW-R - r--の
(2)許可は、testという名前のファイルを読み込み、更新します
インポートにjava.io.IOException; 輸入java.nio.file.Files。 輸入java.nio.file.Path。 輸入java.nio.file.Paths。 輸入 java.nio.file.attribute *。; 輸入java.util.EnumSet。 輸入java.util.Set; 輸入 静的 java.nio.file.attribute.PosixFilePermission *。; パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ パスパス = Paths.get( "/ WWW / test1.txtという" )。 PosixFileAttributeView posixView = Files.getFileAttributeView(パス、 PosixFileAttributeView。クラス); もし(posixView == NULL ){ System.out.format( "POSIX属性ビューは%nをサポートしていません。" ); 返します。 } System.out.println( "旧:" ); readPermissions(posixView)。 updatePermissions(posixView)。 System.out.println( "新しいです:" ); readPermissions(posixView)。 } 公共の 静的な 無効readPermissions(PosixFileAttributeView posixView){ しようと{ PosixFileAttributesのはattribs。 attribs = posixView.readAttributes()。 設定 <PosixFilePermission>権限= attribs.permissions()。 // のrwxrwxrwxフォームにPOSIXのファイルアクセス許可のセットを変換 文字列rwxFormPermissions = PosixFilePermissions.toString(権限) System.out.println(rwxFormPermissions)。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } 公共の 静的な 無効updatePermissions(PosixFileAttributeView posixView){ しようと{ 設定する <PosixFilePermission>パーミッション= EnumSet.of(OWNER_READ、OWNER_WRITE、OWNER_EXECUTE、 グループ読み出し、グループ書き込み)。 posixView.setPermissions(権限) System.out.println( "アクセス許可が正常に設定されました。" ); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } }
出力
旧:
RW-R -----
権限が正常に設定されました。
新しい:
rwxrw ----