即使关闭了相应的读取器和写入器,也无法删除文件。
权限存在于文件中
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()
进行检查。