我对以下代码有点怀疑:
try {
File file = new File("writing");
file.createNewFile();
System.out.println(file.delete());
System.out.println(file.exists());
PrintWriter pw = new PrintWriter(file);
pw.print(324.2342);
pw.flush();
pw.close();
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
System.out.println(br.readLine());
br.close();
} catch(IOException ioE) {
System.out.println("Indeed");
}
为什么在这种情况下,方法 file.delete() 显然说它可以工作,因为它在执行时返回“true”,并且它也被file.exists()
返回“false”的方法确认。但是在运行时我没有得到任何异常,例如“IOException,文件“正在写入”不存在”或类似的东西。
为什么即使物理删除文件仍保留在堆中?不应该在调用 delete 方法后立即自动收集垃圾吗?我知道不是因为我看到了输出。