gpt4 book ai didi

java - 设置文件权限总是返回 FALSE

转载 作者:行者123 更新时间:2023-12-04 10:04:47 24 4
gpt4 key购买 nike

代码:

File dir = new File(path);
boolean rc1 = dir.setExecutable(true, false);
boolean rc2 = dir.setReadable(true, false);
boolean rc3 = dir.setWritable(true, false);
if (!rc1 || !rc2 || !rc3){
logger.warn("One of the permissions set returned false: rc1="+rc1+" rc2="+rc2+" rc3="+rc3 + " [for dir '"+dir+"']");
}

在 Ubuntu 上,所有 3 个调用都返回 false。
在我的 Windows 上,只有第三次调用 setWritable 返回 false。

目标是创建文件/目录,以便用户(tomcat)和组能够读/写。
但是在 Ubuntu 上创建的文件没有该组的写入权限。

最佳答案

我找到了解决方案并将回答我自己的问题:
在设置文件或目录的权限时,您首先必须实际创建目录或写入文件,然后才设置权限。
所以,我一开始做的是错误的:

File dir = new File(path);
boolean rc1 = dir.setExecutable(true, false);

虽然实际上需要:
File dir = new File(path);
dir.mkdirs();
boolean rc1 = dir.setExecutable(true, false);
boolean rc2 = dir.setReadable(true, false);
boolean rc3 = dir.setWritable(true, false);


    File f = new File(uploadedFileLocation);
ImageIO.write(image, "jpg", f);
boolean rc1 = f.setExecutable(true, false);
boolean rc2 = f.setReadable(true, false);
boolean rc3 = f.setWritable(true, false);

然后它会工作:)

关于java - 设置文件权限总是返回 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052388/

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