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

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

 更新時(shí)間:2019年12月03日 10:55:09   作者:慕塵  
這篇文章主要介紹了如何使用java修改文件所有者及其權(quán)限,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了如何使用java修改文件所有者及其權(quán)限,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.設(shè)置所有者

管理文件所有者

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

要使用UserPrincipal來(lái)管理文件的所有者

(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()方法用來(lái)設(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----

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring boot @ResponseBody轉(zhuǎn)換JSON 時(shí) Date 類型處理方法【兩種方法】

    spring boot @ResponseBody轉(zhuǎn)換JSON 時(shí) Date 類型處理方法【兩種方法】

    這篇文章主要介紹了spring boot @ResponseBody轉(zhuǎn)換JSON 時(shí) Date 類型處理方法,主要給大家介紹Jackson和FastJson兩種方式,每一種方法給大家介紹的都非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • Java 1.0和Java 1.1 的IO類的比較

    Java 1.0和Java 1.1 的IO類的比較

    Java庫(kù)的IO分為輸入/輸出兩部分。早期的Java 1.0版本的輸入系統(tǒng)是InputStream及其子類,輸出系統(tǒng)是OutputStream及其子類。后來(lái)的Java 1.1版本對(duì)IO系統(tǒng)進(jìn)行了重新設(shè)計(jì)。本分對(duì)此做了分析和比較,有利于學(xué)習(xí),最后給出了例子。
    2013-11-11
  • Java?String類和StringBuffer類的區(qū)別介紹

    Java?String類和StringBuffer類的區(qū)別介紹

    這篇文章主要介紹了Java?String類和StringBuffer類的區(qū)別,?關(guān)于java的字符串處理我們一般使用String類和StringBuffer類有什么不同呢,下面我們一起來(lái)看看詳細(xì)介紹吧
    2022-03-03
  • java實(shí)現(xiàn)驗(yàn)證碼類生成中文驗(yàn)證碼

    java實(shí)現(xiàn)驗(yàn)證碼類生成中文驗(yàn)證碼

    java實(shí)現(xiàn)的漢字輸入驗(yàn)證碼,主要包含兩個(gè)類,一個(gè)是生成驗(yàn)證碼,一個(gè)是判斷驗(yàn)證碼輸入是否正確,實(shí)現(xiàn)原理非常簡(jiǎn)單,將漢字和干擾線生成圖片并將漢字保存到session,前臺(tái)獲取每次生成驗(yàn)證碼圖片并用文本框值和session值比較,功能就怎么簡(jiǎn)單
    2014-01-01
  • Java實(shí)現(xiàn)手機(jī)號(hào)碼歸屬地查詢

    Java實(shí)現(xiàn)手機(jī)號(hào)碼歸屬地查詢

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)手機(jī)號(hào)碼歸屬地查詢功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法

    Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-02-02
  • SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源配置的示例詳解

    SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源配置的示例詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源配置的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • java poi導(dǎo)出excel時(shí)如何設(shè)置手動(dòng)換行

    java poi導(dǎo)出excel時(shí)如何設(shè)置手動(dòng)換行

    這篇文章主要介紹了java poi導(dǎo)出excel時(shí)如何設(shè)置手動(dòng)換行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java利用DFA算法實(shí)現(xiàn)敏感詞管理

    Java利用DFA算法實(shí)現(xiàn)敏感詞管理

    我們?cè)谕瓿梢恍┪恼掳l(fā)布的功能是,可以使用第三方工具如阿里云的內(nèi)容安全來(lái)進(jìn)行文章的審核,但是這個(gè)第三方接口并不能過(guò)濾一些敏感詞,所以本文就來(lái)講講如何通過(guò)DFA算法就行敏感詞管理吧
    2024-11-11
  • 簡(jiǎn)單易懂講解happens-before原則

    簡(jiǎn)單易懂講解happens-before原則

    Java內(nèi)存模型中的happens-before是什么?為什么會(huì)有這東西的存在?一個(gè)新東西肯定是上手先,但是等我們空下來(lái)回過(guò)頭來(lái),我們還是需要去理解這些知識(shí),只有這樣我才能深刻的記住,并且運(yùn)用熟練。下來(lái)和小編來(lái)一起學(xué)習(xí)下
    2019-05-05

最新評(píng)論

乾安县| 临武县| 青田县| 梁山县| 利津县| 榆社县| 宁蒗| 宜都市| 始兴县| 荃湾区| 双柏县| 崇州市| 都昌县| 曲阳县| 乐至县| 乌苏市| 娄烦县| 武胜县| 洞头县| 车险| 石嘴山市| 右玉县| 壤塘县| 达孜县| 巢湖市| 乐业县| 察隅县| 象山县| 孟州市| 诸城市| 湘乡市| 马关县| 平利县| 普兰县| 蒲江县| 青冈县| 中阳县| 牙克石市| 西宁市| 南华县| 库车县|