我对下面的代码有点怀疑:
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()
方法也确认它返回“错误的”。但是在运行时我没有得到任何异常,例如 “IOException the file 'writing' does not exist” 或类似的东西。
为什么文件在物理删除后仍保留在堆中?调用 delete 方法后不应该自动进行垃圾回收吗?我知道不是,因为我看到了输出。
最佳答案
这是因为 File
代表一个抽象路径,请参阅 JavaDoc http://docs.oracle.com/javase/6/docs/api/java/io/File.html .它不代表操作系统中的文件句柄。
您的代码中的行:
PrintWriter pw = new PrintWriter(file);
只是创建一个新文件。尝试在调用此命令后删除文件...
关于java - Java中使用delete()方法删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899480/