最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 如何為文件及文件夾添加權(quán)限

 更新時(shí)間:2021年09月30日 16:36:39   作者:JSON_ZJS  
這篇文章主要介紹了java 如何為文件及文件夾添加權(quán)限的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java 為文件及文件夾添加權(quán)限

/**
 * 增加權(quán)限,使路徑可上傳文件
 */
public static void addChmod777(String filePath) throws IOException {
	if (!System.getProperty("os.name").startsWith("Win")) {
		String cmdGrant = "chmod 777 " + filePath;
		BaseLogMethod.logInfo(TAG, "File Augmentation after Moving:" + cmdGrant);
		Runtime.getRuntime().exec(cmdGrant);
	}
}
/**
 * 增加權(quán)限,使路徑及子路徑都有權(quán)限
 */
public static void addRChmod777(String filePath) throws IOException {
	if (!System.getProperty("os.name").startsWith("Win")) {
		String cmdGrant = "chmod -R 777 " + filePath;
		BaseLogMethod.logInfo(TAG, ".addRChmod777: File Augmentation after Moving:" + cmdGrant);
		Runtime.getRuntime().exec(cmdGrant);
	}
}

java 修改文件所有者及其權(quán)限

1.設(shè)置所有者

管理文件所有者

Files.getOwner()和Files.setOwner()方法

要使用UserPrincipal來管理文件的所有者

(1)更改文件的所有者

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.FileOwnerAttributeView;
import java.nio.file.attribute.UserPrincipal;
import java.nio.file.attribute.UserPrincipalLookupService;
public class Main {
    public static void main(String[] args) {
        Path path = Paths.get("/www/test1.txt");
        FileOwnerAttributeView foav = Files.getFileAttributeView(path,
                FileOwnerAttributeView.class);
        try {
            UserPrincipal owner = foav.getOwner();
            System.out.format("Original owner  of  %s  is %s%n", path,
                    owner.getName());
            FileSystem fs = FileSystems.getDefault();
            UserPrincipalLookupService upls = fs.getUserPrincipalLookupService();
            UserPrincipal newOwner = upls.lookupPrincipalByName("abc");
            foav.setOwner(newOwner);
            UserPrincipal changedOwner = foav.getOwner();
            System.out.format("New owner  of  %s  is %s%n", path,
                    changedOwner.getName());
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

輸出

查看文件詳細(xì)信息

2.ACL文件權(quán)限

Windows上支持ACL類型文件屬性

使用AclFileAttributeView的

  • getAcl()方法獲取文件的AclEntry列表
  • setAcl()方法設(shè)置文件的AclEntry列表

(1)讀取文件e:/test1.txt的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.AclFileAttributeView;
import java.util.List;
import java.util.Set;
public class Main {
    public static void main(String[] args) {       
        Path path = Paths.get("e:/test1.txt");
        AclFileAttributeView aclView = Files.getFileAttributeView(path,
                AclFileAttributeView.class);
        if (aclView == null) {
            System.out.format("ACL view  is not  supported.%n");
            return;
        }
        try {
            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);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

輸出結(jié)果為

Principal: BUILTIN\Administrators (Alias)
Type: ALLOW
Permissions are:
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
Principal: NT AUTHORITY\SYSTEM (Well-known group)
Type: ALLOW
Permissions are:
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
Principal: NT AUTHORITY\Authenticated Users (Well-known group)
Type: ALLOW
Permissions are:
WRITE_DATA
READ_ATTRIBUTES
APPEND_DATA
WRITE_NAMED_ATTRS
SYNCHRONIZE
WRITE_ATTRIBUTES
EXECUTE
DELETE
READ_DATA
READ_ACL
READ_NAMED_ATTRS
Principal: BUILTIN\Users (Alias)
Type: ALLOW
Permissions are:
READ_ATTRIBUTES
SYNCHRONIZE
EXECUTE
READ_DATA
READ_ACL
READ_NAMED_ATTRS

(2)為指定用戶添加新的ACL條目

e:/test1.txt為用戶abc添加DATA_READ和DATA_ WRITE權(quán)限

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.*;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import static java.nio.file.attribute.AclEntryPermission.READ_DATA;
import static java.nio.file.attribute.AclEntryPermission.WRITE_DATA;
public class Main {
    public static void main(String[] args) {
        
        Path path = Paths.get("e:/test1.txt");
        AclFileAttributeView aclView = Files.getFileAttributeView(path,
                AclFileAttributeView.class);
        if (aclView == null) {
            System.out.format("ACL view  is not  supported.%n");
            return;
        }
        try {
            UserPrincipal bRiceUser = FileSystems.getDefault()
                    .getUserPrincipalLookupService().lookupPrincipalByName("abc");
            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);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

輸出結(jié)果比剛才多了

Principal: hkgi-PC\abc (User)
Type: ALLOW
Permissions are:
WRITE_DATA
READ_DATA

3.POSIX文件權(quán)限

UNIX支持POSIX標(biāo)準(zhǔn)文件屬性

PosixFilePermission枚舉類型定義九個(gè)常量,每個(gè)權(quán)限組件一個(gè)。

九個(gè)常數(shù)命名為X_Y,其中X是OWNER,GROUP和OTHERS,Y是READ,WRITE和EXECUTE。

  • PosixFilePermissions的toString()方法將一組PosixFilePermission枚舉常量轉(zhuǎn)換為rwxrwxrwx形式的字符串
  • PosixFileAttributeView的setPermissions()方法用來設(shè)置權(quán)限

(1)輸出/www/test1.txt的權(quán)限

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.*;
import java.util.Set;
public class Main {
    public static void main(String[] args) {
        Path path = Paths.get("/www/test1.txt");
        PosixFileAttributeView posixView = Files.getFileAttributeView(path,
                PosixFileAttributeView.class);
        try{
            PosixFileAttributes attribs = posixView.readAttributes();
            Set<PosixFilePermission> permissions = attribs.permissions();
            // Convert the file permissions into the rwxrwxrwx string form
            String rwxFormPermissions = PosixFilePermissions.toString(permissions);
            // Print the permissions
            System.out.println(rwxFormPermissions);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

輸出結(jié)果

rw-r--r--

(2)讀取和更新名為test的文件權(quán)限

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.*;
import java.util.EnumSet;
import java.util.Set;
import static java.nio.file.attribute.PosixFilePermission.*;
public class Main {
    public static void main(String[] args) {
        Path path = Paths.get("/www/test1.txt");
        PosixFileAttributeView posixView = Files.getFileAttributeView(path,
                PosixFileAttributeView.class);
        if (posixView == null) {
            System.out.format("POSIX attribute view  is not  supported%n.");
            return;
        }
        System.out.println("old:");
        readPermissions(posixView);
        updatePermissions(posixView);
        System.out.println("new:");
        readPermissions(posixView);
    }
    public static void readPermissions(PosixFileAttributeView posixView) {
        try{
            PosixFileAttributes attribs;
            attribs = posixView.readAttributes();
            Set<PosixFilePermission> permissions = attribs.permissions();
            // Convert the set of posix file permissions into rwxrwxrwx form
            String rwxFormPermissions = PosixFilePermissions.toString(permissions);
            System.out.println(rwxFormPermissions);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static void updatePermissions(PosixFileAttributeView posixView) {
        try {
            Set<PosixFilePermission> permissions = EnumSet.of(OWNER_READ, OWNER_WRITE,OWNER_EXECUTE,
                    GROUP_READ,GROUP_WRITE);
            posixView.setPermissions(permissions);
            System.out.println("Permissions set successfully.");
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

輸出結(jié)果

old:
rw-r-----
Permissions set successfully.
new:
rwxrw----

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于mybatis-plus timestamp返回為null問題的排除

    基于mybatis-plus timestamp返回為null問題的排除

    這篇文章主要介紹了mybatis-plus timestamp返回為null問題的排除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中的使用及連接Redis數(shù)據(jù)庫(附源碼)

    Java中的使用及連接Redis數(shù)據(jù)庫(附源碼)

    這篇文章主要介紹了Java中的使用及連接Redis數(shù)據(jù)庫(附源碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring Boot 添加MySQL數(shù)據(jù)庫及JPA實(shí)例

    Spring Boot 添加MySQL數(shù)據(jù)庫及JPA實(shí)例

    本篇文章主要介紹了Spring Boot 添加MySQL數(shù)據(jù)庫及JPA,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 子線程任務(wù)發(fā)生異常時(shí)主線程事務(wù)回滾示例過程

    子線程任務(wù)發(fā)生異常時(shí)主線程事務(wù)回滾示例過程

    這篇文章主要為大家介紹了子線程任務(wù)發(fā)生了異常時(shí)主線程事務(wù)如何回滾的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java中的ReentrantLock使用解析

    Java中的ReentrantLock使用解析

    這篇文章主要介紹了Java中的ReentrantLock使用解析,ReentrandLock即可重入鎖,可重入鎖解決的是重入鎖定的問題,重入鎖定指的是當(dāng)一個(gè)線程執(zhí)行邏輯時(shí),需要兩次獲取鎖,而該鎖不可重入就會(huì)導(dǎo)致內(nèi)部嵌套無法獲取鎖導(dǎo)致Reentrance Lockout發(fā)生,需要的朋友可以參考下
    2023-11-11
  • java中Scanner類的簡(jiǎn)單用法分享

    java中Scanner類的簡(jiǎn)單用法分享

    這篇文章主要介紹了java中Scanner類的簡(jiǎn)單用法,有需要的朋友可以參考一下
    2014-01-01
  • 用Java實(shí)現(xiàn)連連看小游戲

    用Java實(shí)現(xiàn)連連看小游戲

    這篇文章主要為大家詳細(xì)介紹了用Java實(shí)現(xiàn)連連看小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳細(xì)總結(jié)Java for循環(huán)的那些坑

    詳細(xì)總結(jié)Java for循環(huán)的那些坑

    在平常寫代碼的過程中循環(huán)是不可避免的,雖然for的語法并不復(fù)雜,但是在開發(fā)中還是會(huì)遇到一些坑,雖然大部分的坑都是自己的騷操作導(dǎo)致的.今天來總結(jié)一下for循環(huán)在開發(fā)中可能遇到的坑,不要在同樣的問題上再次犯錯(cuò).需要的朋友可以參考下
    2021-05-05
  • Hibernate的Annotation版Hello world實(shí)例

    Hibernate的Annotation版Hello world實(shí)例

    這篇文章主要介紹了Hibernate的Annotation版Hello world實(shí)現(xiàn)方法,詳細(xì)分析了Annotation的具體使用步驟與Hello world實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-03-03
  • SpringBoot2.0如何啟用https協(xié)議

    SpringBoot2.0如何啟用https協(xié)議

    這篇文章主要介紹了SpringBoot2.0如何啟用https協(xié)議,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論

滦平县| 久治县| 安平县| 湟中县| 阜新市| 道真| 西贡区| 贞丰县| 温泉县| 宜都市| 苍梧县| 七台河市| 文水县| 叙永县| 克什克腾旗| 保靖县| 玉山县| 江都市| 陇西县| 册亨县| 陇川县| 辉南县| 沂源县| 罗甸县| 肥乡县| 新密市| 鹤山市| 邛崃市| 临桂县| 泸溪县| 南陵县| 石台县| 无棣县| 诸暨市| 南城县| 萨嘎县| 格尔木市| 平陆县| 芮城县| 察隅县| 岫岩|