javaファイルの所有者と変更する権限

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 ----

おすすめ

転載: www.cnblogs.com/baby123/p/11122289.html