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

java.io.FileNotFoundException(访问被拒绝)-file.canWrite()不工作,java,permissions,filenotfoundexception,Java,Permissions,Filenotfoundexception,我正试图清空jasper文件。在写之前,我检查了它的写访问权限,它告诉我我可以在上面写。但它以java.io.FileNotFoundException(访问被拒绝)-file.canWrite()终止 我错过了什么 try { File f = new File("C:\\Program Files (x86)\\XXXXXX\\XXX\\X\\X.jrxml"); if(f.canWrite()){

我正试图清空jasper文件。在写之前,我检查了它的写访问权限,它告诉我我可以在上面写。但它以
java.io.FileNotFoundException(访问被拒绝)-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();
    }

在Program Files文件夹中写入通常具有相当有限的访问权限,通常您必须使用管理员帐户才能这样做。我建议您尝试将
.jrxml
保存在
\\Program Files(x86)
之外更易访问的目录中,就像您的
应用程序数据
文件夹一样,它甚至可能已经存在。

您也可以尝试一些类似于隔离存储的方法,以确保您拥有权限,并应向您展示如何使用它

显然,即使您无法在windows上写入,canWrite也可能返回true(根据此:)。javadoc对此并不十分清楚


如果您至少使用java 7,则可以尝试使用Files.isWritable,以查看是否达到预期效果。否则,检查权限的唯一方法似乎是尝试写入,看看会发生什么。

您有权限写入该目录吗?是的,我有权限。您是否交叉检查了其他进程是否仍在使用该文件?这可能是一个原因。另外,您是否在Windows 7上运行?