我试图创建一个指向每个人都有写访问权限的文件夹的FileWriter实例:
new FileWriter("C:\\Temp\java_play\\temp")我得到了java.io.FileNotFoundException的详细信息:
"C:\Temp\java_play\temp (Access is denied)"该文件夹存在,如果我在调试器中停止并在下面对表达式进行计算,它总是按它应该返回的方式返回true:
new File("C:\\Temp\java_play\\temp").canWrite()我不明白怎么回事。我正在使用intelij,我有Windows 7操作系统,我试图使用Java 8来运行它。
提前谢谢你。
发布于 2022-01-25 10:49:15
你已经报告了预期的行为。在Windows上,任何使用FileWriter写入目录的尝试都将失败,导致访问被拒绝:
File folder = new File("C:\\Temp\java_play\\temp");
System.out.println("folder.isDirectory()="+folder.isDirectory()+" folder.canWrite()="+folder.canWrite());
// prints "folder.isDirectory()=true folder.canWrite()=true"
System.out.println("new FileWriter("+folder+")="+new FileWriter(folder));
// reports Exception java.io.FileNotFoundException: C:\Temp\java_play\temp (Access is denied)只要提供的文件名是可写的,更改文件夹中文件的路径就可以正常工作:
File file = new File(folder, "file"+System.nanoTime()+".xyz");
try(FileWriter fw = new FileWriter(file)) {
// no exception
}https://stackoverflow.com/questions/70841953
复制相似问题