uri*_*rir 7 java io permissions file-permissions file
代码:
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+"']");
}
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上,所有3个调用都返回false.在我的Windows上,只有第三次调用setWritable会返回false.
目标是创建文件/目录,以便用户(tomcat)和组能够读/写.
但是在Ubuntu上创建的文件没有写入组的权限.
uri*_*rir 13
我找到了解决方案,并将回答我自己的问题:
在文件或目录上设置权限时,首先必须实际创建目录或编写文件,然后才设置权限.
所以,我在开始时所做的事情是错误的:
File dir = new File(path);
boolean rc1 = dir.setExecutable(true, false);
Run Code Online (Sandbox Code Playgroud)
虽然实际需要:
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);
Run Code Online (Sandbox Code Playgroud)
要么
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);
Run Code Online (Sandbox Code Playgroud)
然后它会工作:)
| 归档时间: |
|
| 查看次数: |
9348 次 |
| 最近记录: |