次のコードについて少し疑問があります。
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.exists()
なぜこの状況で、メソッド file.delete() は、実行時に「true」を返し、 「false」を返すメソッドによっても確認されるため、機能すると明らかに言っています。ただし、実行時に「IOException the file "writing" does not exist」などの例外は発生しません。
物理的に削除されたにもかかわらず、ファイルがヒープに残り続けるのはなぜですか? delete メソッドが呼び出されるとすぐに、自動的にガベージ コレクションを行うべきではありませんか? 出力を見たので、そうではないことはわかっています。