gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:19:04 25 4
gpt4 key购买 nike

我正在使用 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/

最佳答案

这是因为应用了 umask。

尝试在 shell 中输入以下内容:

umask 0

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

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

<小时/>

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

关于java - 在 unix 上使用 NIO 时未设置写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com