程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(3)

PosixFilePermission的Java设置文件权限

发布于2021-05-29 19:54     阅读(990)     评论(0)     点赞(10)     收藏(5)


参考文章
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);
    }


}

在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:快起来搬砖啦

链接:http://www.javaheidong.com/blog/article/207256/db817e77f28344ce7667/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)