PosixFilePermission的Java设置文件权限

16 篇文章 1 订阅

参考文章
https://blog.csdn.net/lv8549510/article/details/85406215
https://blog.csdn.net/cunchi4221/article/details/107473762

一、Linux文件权限

文件的权限针对三类对象进行定义

owner 属主,缩写u

group 属组,缩写g

other 其他,缩写o

每个文件针对每类访问者定义了三种主要权限

r:Read 读

w:Write 写

x:eXecute 执行

二、java通过PosixFilePermission来设置文件权限

1. PosixFilePermission介绍

PosixFilePermission是一个枚举类,代表着文件的基本权限。

public enum PosixFilePermission {

    /**
     * 文件所有者的读权限
     */
    OWNER_READ,

    /**
     * 文件所有者写权限。
     */
    OWNER_WRITE,

    /**
     * 文件所有者执行权限
     */
    OWNER_EXECUTE,

    /**
     * 文件所属组成员读权限
     */
    GROUP_READ,

    /**
     * 文件所属组成员写权限
     */
    GROUP_WRITE,

    /**
     * 文件所属组成员执行权限
     */
    GROUP_EXECUTE,

    /**
     * 其他账号读权限。
     */
    OTHERS_READ,

    /**
     * 其他账号写权限。
     */
    OTHERS_WRITE,

    /**
     * 其他账号执行权限。
     */
    OTHERS_EXECUTE;
}

2. PosixFilePermission的使用

Java 7引入了PosixFilePermission Enumjava.nio.file.Files包含的一个方法setPosixFilePermissions(Path path,Set <PosixFilePermission> perms)可用于设置文件权限。

这种方式原生支持LINUX和UNIX低层系统

我在win上运行会抛出UnsupportedOperationException

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.HashSet;
import java.util.Set;

/**
 * @description: PosixFilePermission的Java设置文件权限实例
 */
public class FilePermissions {
    /**
     * 使用PosixFilePermission设置文件权限777
     *
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {



        Set<PosixFilePermission> perms = new HashSet<>();

        perms.add(PosixFilePermission.OWNER_READ);
        perms.add(PosixFilePermission.OWNER_WRITE);
        perms.add(PosixFilePermission.OWNER_EXECUTE);

        perms.add(PosixFilePermission.GROUP_READ);
        perms.add(PosixFilePermission.GROUP_WRITE);
        perms.add(PosixFilePermission.GROUP_EXECUTE);

        perms.add(PosixFilePermission.OTHERS_READ);
        perms.add(PosixFilePermission.OTHERS_WRITE);
        perms.add(PosixFilePermission.OTHERS_EXECUTE);

        Files.setPosixFilePermissions(Paths.get("test/java.txt"), perms);
    }


}

可见执行后的确更改了文件的权限
在这里插入图片描述

对比其他修改文件权限的方式 PosixFilePermission提供了更多选项,代码更具可读性。如果使用的是Java 7或更高版本,则应使用PosixFilePermission来设置文件权限。

3. 使用PosixFilePermissions

PosixFilePermissions仅由静态方法组成,用于对PosixFilePermission对象进行操作。
PosixFilePermissions中有一个fromString方法

public static Set<PosixFilePermission> fromString(String perms)
//返回与给定的String表示相对应的一String权限。 

perms参数是一个String权限的String。 它有9个字符被解释为三组三个。 第一组是指所有者的权限; 旁边的组权限和最后给别人。 在每组内,第一个字符为’r’ ,表示读取权限,第二个字符为’w’表示允许写入,第三个字符为’x’用于执行许可。 如果未设置权限,则相应的字符设置为’-’ 。

使用这个方法可以更简洁的操作PosixFilePermission

例子:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.HashSet;
import java.util.Set;

/**
 * @description: PosixFilePermission的Java设置文件权限,
 */
public class FilePermissions {


    public static void main(String[] args) throws IOException {
        
        Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
        Files.setPosixFilePermissions(Paths.get("test/test.txt"), perms);
    }


}

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值