Java File class has the ability to set the file permissions but it’s not versatile. The biggest drawback is that you can divide file permissions into two sets of users – owner and everybody else only. You can’t set different file permissions for group and other users.
Java File类具有设置文件许可权的能力,但是它并不通用。 最大的缺点是,您可以将文件权限分为两组用户-所有者和其他所有用户。 您无法为网上论坛和其他用户设置不同的文件权限。
Java设置文件权限 (Java Set File Permissions)
Java 7 has introduced PosixFilePermission
Enum and java.nio.file.Files includes a method setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) that can be used to set file permissions easily.
Java 7引入了PosixFilePermission
枚举和java.nio.file.Files包含一个setPosixFilePermissions(Path path,Set <PosixFilePermission> perms)方法 ,可用于轻松设置文件权限。
Here is a simple program that clearly shows why PosixFilePermission is better.
这是一个简单的程序,清楚地说明了为什么PosixFilePermission更好。
FilePermissions.java
FilePermissions.java
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);
}
}
From the above example, it’s clear that PosixFilePermission provides more options and code is more readable. If you are using Java 7 or above, you should use it for setting file permissions in java.
从上面的示例中可以明显看出,PosixFilePermission提供了更多选项,并且代码更具可读性。 如果您使用的是Java 7或更高版本,则应使用它在Java中设置文件权限。
翻译自: https://www.journaldev.com/855/java-set-file-permissions-posixfilepermission