【发布时间】:2020-03-18 11:34:18
【问题描述】:
我在 7 年前发现了同样的问题,但找不到解决方案。
我创建了一个拒绝写入权限的文件“readonlyfile.txt”。 Windows 不允许 编辑和存储这个文件 - 好的 - 预期的。
但是下面的 canWrite() 代码表明这个文件是可以写入的。
Path readonlyfile = Paths.get("C:\\temp_\\__readonlyfile.txt");
boolean canwrite = false;
try
{ File f = readonlyfile.toFile();
//File f = new File("C:/temp_/__readonlyfile.txt");
//File f = new File("C:\\temp_\\__readonlyfile.txt");
canwrite = f.canWrite();
} catch (Exception e)
{ System.out.println("canWrite()" + e);
}
System.out.println("---canWrite: " + canwrite);
//---canWrite: true
BufferedWriter bw = null;
try
{
bw = Files.newBufferedWriter(readonlyfile);
bw.write("foo");
System.out.println("write() succeeds");
} catch (Exception e)
{ System.out.println("---cannot open: " + e);
//---cannot open: java.nio.file.AccessDeniedException: C:\temp_\__readonlyfile.txt
} finally
{ try { bw.close(); } catch (Exception ee) {}
}
【问题讨论】:
-
Files.isWritable(readonlyfile)是否显示相同? -
很好 - 这按预期工作并返回:---canWrite: false
标签: java file-permissions