在unix上使用NIO时,写入权限未设置

时间:2014-10-30 09:50:40

标签: java permissions nio 777

我正在使用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 个答案:

答案 0 :(得分:2)

这是因为应用了umask。

尝试在shell中输入:

umask 0

然后重新运行程序(或从命令行启动IDE并运行代码)。这也意味着如果执行umask 027,则创建的目录的权限将为750。

不幸的是,您无法在Java本身中更改您的进程'umask(因为这是每个进程,并继承)...


请注意,this method设置“绝对”文件权限。