使用Java中的delete()方法删除文件

Rol*_*all 7 java file

我对以下代码有点怀疑:

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");
}
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下该方法file.delete()显然是说,它的作品,因为它执行时返回"真"连带也被证实file.exists()返回"假"的方法.但是在运行时我没有得到任何异常,如"IOException the file",写"不存在"或类似的东西.

为什么即使在物理上删除文件仍保留在堆中?一旦调用delete方法,它不应该自动被垃圾收集吗?我知道它不是因为我看到了输出.

Bor*_*der 4

这是因为File代表一个抽象路径,请参阅 JavaDoc http://docs.oracle.com/javase/6/docs/api/java/io/File.html。它不代表操作系统中的文件句柄。
您的代码中的行:

PrintWriter pw = new PrintWriter(file);
Run Code Online (Sandbox Code Playgroud)

只需创建一个新文件即可。尝试在调用此命令后删除文件...