我试图清空一个碧玉文件。在写之前,我检查了它的写访问权限,我告诉我我可以写它。但它终止于java.io.FileNotFoundException (Access is denied) - file.canWrite()
我错过了什么?
try {
File f = new File("C:\\Program Files (x86)\\XXXXXX\\XXX\\X\\X.jrxml");
if(f.canWrite()){
BufferedWriter bf = new BufferedWriter(new FileWriter(f));
bf.write("");
bf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:1)
在Program Files文件夹中写入通常具有非常有限的访问权限,并且您通常必须使用管理员帐户才能这样做。我建议您尝试将.jrxml
保存在\\Program Files (x86)
之外的ApplicationData
文件夹中,比{{1}}文件夹更方便,但它可能已存在。
您也可以尝试使用隔离存储来确保您拥有权限, this 应该向您展示如何使用它。
答案 1 :(得分:1)
显然,即使你不能在windows上写字,canWrite也可能返回true(根据这个:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8060110)。 javadoc对此并不十分清楚。
如果您至少使用java 7来查看是否有预期的结果,则可以尝试使用Files.isWritable。否则,检查权利的唯一方法就是尝试写作,看看会发生什么。