中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java修改文件所有者及其權限的方法

發布時間:2021-03-05 16:02:28 來源:億速云 閱讀:334 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關使用java修改文件所有者及其權限的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

這篇文章主要介紹了如何使用java修改文件所有者及其權限,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

1.設置所有者

管理文件所有者

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();    }  }}

輸出

查看文件詳細信息

2.ACL文件權限

Windows上支持ACL類型文件屬性

使用AclFileAttributeView的

  getAcl()方法獲取文件的AclEntry列表

  setAcl()方法設置文件的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();    }  }}

輸出結果為

Principal: BUILTIN\Administrators (Alias)Type: ALLOWPermissions 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: ALLOWPermissions 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: ALLOWPermissions 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: ALLOWPermissions are:READ_ATTRIBUTES SYNCHRONIZE EXECUTE READ_DATA READ_ACL READ_NAMED_ATTRS

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

e:/test1.txt為用戶abc添加DATA_READ和DATA_ WRITE權限
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();    }  }}

輸出結果比剛才多了

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

3.POSIX文件權限

UNIX支持POSIX標準文件屬性

PosixFilePermission枚舉類型定義九個常量,每個權限組件一個。

九個常數命名為X_Y,其中X是OWNER,GROUP和OTHERS,Y是READ,WRITE和EXECUTE。

PosixFilePermissions的toString()方法將一組PosixFilePermission枚舉常量轉換為rwxrwxrwx形式的字符串

PosixFileAttributeView的setPermissions()方法用來設置權限

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

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();    }  }}

輸出結果

rw-r--r--

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

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();    }  }}

輸出結果

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

感謝各位的閱讀!關于“使用java修改文件所有者及其權限的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白山市| 霍邱县| 西城区| 武乡县| 通道| 惠来县| 张家港市| 阜康市| 靖江市| 白玉县| 抚松县| 古浪县| 太仆寺旗| 武城县| 若羌县| 繁昌县| 锦州市| 修文县| 乃东县| 美姑县| 大埔区| 西和县| 岫岩| 邛崃市| 鹤山市| 安陆市| 沙洋县| 阜新市| 湟中县| 锡林浩特市| 乌拉特后旗| 涞水县| 宁远县| 呼伦贝尔市| 大石桥市| 铜川市| 栖霞市| 石景山区| 琼结县| 托克逊县| 连云港市|