即使关闭了相应的读取器和写入器,也无法删除文件。
权限存在于文件中
file.delete()返回false
我的代码

main(){
        try{
        File file=new File(path);// Path where the file is present
        FileReader reader = new FileReader(path);
        BufferedReader br = new BufferedReader(reader);
        FileWriter writer = new FileWriter(pathOther);
        BufferedWriter wr = new BufferedWriter(writer);
        // Readers and writers for i/o operations
       while((String str=br.readLine())!=null){
       wr.write(str);                    // Copying to another file
       }
       }catch(Exception e){}
       finally{
        reader.close(); //close reader

        writer.close(); //close writer
        file.delete(); //This returns false

}

最佳答案

我对发生的情况的猜测是,您关闭了FileInputStream但保持BufferedReader处于打开状态,这使文件句柄保持不变。然后,当您尝试删除该文件时,它会返回false,因为其他文件带有句柄。

尝试以下代码:

File file = new File(path);
try {
    br = new BufferedReader(new FileReader(file));

    // use the reader ...
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (br != null) br.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

// now close the file
file.delete();


更新:

在测试上面的代码时,我注意到其他可能导致您看到的观察结果。如果path处的文件不存在,则出于这个原因,逻辑上调用file.delete也会失败。因此,在尝试删除该文件之前,应确保该文件确实存在。您可以致电file.exists()进行检查。

08-28 18:07
查看更多