java.io.FileNotFoundException(访问被拒绝) - file.canWrite()不起作用

时间:2015-02-10 15:33:34

标签: java permissions filenotfoundexception

我试图清空一个碧玉文件。在写之前,我检查了它的写访问权限,我告诉我我可以写它。但它终止于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();
    }

2 个答案:

答案 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。否则,检查权利的唯一方法就是尝试写作,看看会发生什么。