iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java 如何为文件及文件夹添加权限
  • 863
分享到

java 如何为文件及文件夹添加权限

2024-04-02 19:04:59 863人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录java 为文件及文件夹添加权限java 修改文件所有者及其权限1.设置所有者2.ACL文件权限3.POSIX文件权限java 为文件及文件夹添加权限 public sta

java 为文件及文件夹添加权限



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

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 修改文件所有者及其权限

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: 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权限


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: ALLOW
Permissions 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----

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java 如何为文件及文件夹添加权限

本文链接: https://www.lsjlt.com/news/137289.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java 如何为文件及文件夹添加权限
    目录java 为文件及文件夹添加权限java 修改文件所有者及其权限1.设置所有者2.ACL文件权限3.POSIX文件权限java 为文件及文件夹添加权限 public sta...
    99+
    2024-04-02
  • Win7系统如何为文件添加Everyone权限
    最近,有Win7系统用户报告称,在关闭文件夹加密超级大师时,出现文件正在被占用的提示,导致软件无法正常关闭。由于文件没有直接点击临时解密并拖放到加密文件夹中,所以文件无法获取访问权限,从而导致无法关闭加密文件夹。此时,我们需要为文件添加Ev...
    99+
    2023-07-19
  • linux如何给文件添加执行权限
    要给Linux中的文件添加执行权限,可以使用`chmod`命令。`chmod`命令用于更改文件或目录的权限。要给文件添加执行权限,可...
    99+
    2023-08-22
    linux
  • ubuntu如何给文件夹权限
    你可以使用chmod命令来更改文件夹的权限。以下是使用chmod命令给文件夹设置权限的示例:1. 给所有者添加读、写和执行权限,使用...
    99+
    2023-08-29
    ubuntu
  • Linux文件/文件夹权限详解
    在Linux中,一个文件/文件夹的权限, 从文件/文件夹的归属来看,可以分为三类,一是文件/文件夹所有者权限、二是所有者所在的用户组权限、三是公共(不限)权限。 从文件本身的操作来看,也可以分为三类,一是读取权限、二是写入权限、三是执行权限...
    99+
    2023-10-24
    linux 运维 服务器
  • 如何使用cacls命令设置文件及其文件夹权限
    这篇文章主要讲解了“如何使用cacls命令设置文件及其文件夹权限”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用cacls命令设置文件及其文件夹权限”吧!你是否不想让别人在你的电脑上打...
    99+
    2023-06-08
  • centos如何查看文件夹权限
    您可以使用以下命令来查看文件夹的权限: ls -l /path/to/folder 这将显示路径/path/to/folder文件...
    99+
    2024-04-09
    centos
  • win11文件夹权限如何解除
    要解除Windows 11中文件夹的权限,你可以按照以下步骤进行操作:1. 找到要解除权限的文件夹,右键单击该文件夹,然后选择“属性...
    99+
    2023-09-01
    win11
  • springboot 如何添加webapp文件夹
    目录springboot 添加webapp文件夹踩坑:添加webapp文件夹能访问jsp却找不到静态资源404目录结构解决方法springboot 添加webapp文件夹 sprin...
    99+
    2024-04-02
  • win10文件夹权限如何解除
    要解除Win10文件夹的权限,您可以按照以下步骤操作:1. 找到要解除权限的文件夹,右键单击它,选择“属性”选项。2. 在弹出的属性...
    99+
    2023-08-31
    win10
  • ubuntu如何更改文件夹权限
    要更改文件夹的权限,您可以使用命令行工具`chmod`。下面是一些常见的用法:1. 更改所有者的权限:```chmod u=rwx ...
    99+
    2023-09-17
    ubuntu
  • Linux中如何处理文件夹权限
    小编给大家分享一下Linux中如何处理文件夹权限,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux下的文件权限r(read):可以读取文件的内容w(writ...
    99+
    2023-06-13
  • linux如何给文件夹赋予权限
    在Linux中,可以使用chmod命令为文件夹赋予读、写、执行权限。要为文件夹赋予权限,可以使用以下命令格式:```bashchmo...
    99+
    2023-09-18
    linux
  • Linux如何设置文件和文件夹的读写权限
    目录权限说明常见的权限修改权限总结权限说明 ls -l <文件名> -rw-rw-r-- 一共有10位数,其中: 最前面那个 - 代表的是类型(-文件 d 文件夹)中间那三个 rw- 代表的是所有者(u...
    99+
    2023-10-28
    Linux文件读写权限 Linux文件夹读写权限 Linux设置读写权限
  • 如何设置server2012文件夹、局域网共享设置权限以及server2012r2文件共享权限
    小编给大家分享一下如何设置server2012文件夹、局域网共享设置权限以及server2012r2文件共享权限,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Wi...
    99+
    2023-06-13
  • cacls命令设置文件及其文件夹权限的方法
    通过cacls命令可以设置文件和文件夹的权限。以下是一些常见的cacls命令及其用法:1. 设置文件的权限:cacls 文件名 /e...
    99+
    2023-08-08
    cacls
  • php如何新建文件夹权限设置
    本文将为大家详细介绍“php如何新建文件夹权限设置”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何新建文件夹权限设置”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知...
    99+
    2023-06-06
  • win8这台电脑文件夹 如何自由添加删除文件夹?
    win8在“这台电脑”增加了6个文件夹(“视频”“文档”“图片”“下载”“音乐&rdqu...
    99+
    2023-06-07
    win8这台电脑文件夹 添加 文件夹 电脑
  • ubuntu下Pureftpd如何配置文件夹权限
    这篇文章主要介绍了ubuntu下Pureftpd如何配置文件夹权限,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。文件夹权限让 “/var/ftp/public” 目录什么人都...
    99+
    2023-06-16
  • 获取AFP共享的文件夹及其权限
    获取AFP共享的文件夹及其权限...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作