我对以下代码有点怀疑:
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 方法后立即自动收集垃圾吗?我知道不是因为我看到了输出。