Java File 类具有设置文件权限的能力,但它不是通用的。最大的缺点是您可以将文件权限划分为两组用户——所有者和其他所有人。您不能为组和其他用户设置不同的文件权限。
Java 设置文件权限
Java 7 引入了PosixFilePermission
Enum并且java.nio.file.Files包含一个方法setPosixFilePermissions(Path path, Set
这是一个简单的程序,它清楚地说明了为什么 PosixFilePermission 更好。
package com.journaldev.files;
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.util.HashSet;
import java.util.Set;
public class FilePermissions {
/**
* File Permissions Java Example using File and PosixFilePermission
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file = new File("/Users/pankaj/temp.txt");
//set application user permissions to 455
file.setExecutable(false);
file.setReadable(false);
file.setWritable(true);
//change permission to 777 for all the users
//no option for group and others
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
//using PosixFilePermission to set file permissions 777
Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
//add owners permission
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE);
//add group permissions
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_EXECUTE);
//add others permissions
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OTHERS_EXECUTE);
Files.setPosixFilePermissions(Paths.get("/Users/pankaj/run.sh"), perms);
}
}
从上面的例子可以看出,PosixFilePermission 提供了更多的选项,代码更易读。如果您使用的是 Java 7 或更高版本,则应该使用它来设置 java 中的文件权限。