在unix上使用NIO时未设置java写入权限
我正在使用NIO设置路径中所有目录的权限,如下所示。我正在尝试授予777权限,但是“w”部分没有得到应用。。。这里怎么了
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
public class permissionTest {
public static void main(String [] args) throws IOException{
Path dirPath = Paths.get("./part1/part2/part3");
Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwxrwx");
System.out.print(permissions.toString() + ' ');
FileAttribute<Set<PosixFilePermission>> fileAttributes =
PosixFilePermissions.asFileAttribute(permissions);
Files.createDirectories(dirPath, fileAttributes);
}
}
$ ls -ld part1/
drwxr-xr-x 3 * *4096 Oct 30 02:48 part1/
# 1 楼答案
这是因为应用了umask
尝试在shell中键入以下内容:
然后重新运行程序(或从命令行启动IDE并运行代码)。这还意味着,如果您执行
umask 027
,您创建的目录的权限将为750不幸的是,您无法在Java本身中更改进程的umask(因为这是每个进程的,并且是继承的)
请注意,有this method可以设置“绝对”文件权限