我对以下代码有点怀疑:
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方法,它不应该自动被垃圾收集吗?我知道它不是因为我看到了输出.
这是因为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)
只需创建一个新文件即可。尝试在调用此命令后删除文件...