目录
- 一、Linux文件权限
- 二、java通过PosixFilePermission来设置文件权限
- 1. PosixFilePermission介绍
- 2. PosixFilePermission的使用
- 3. 使用PosixFilePermissions
一、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 Enum
与java.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);
}
}