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

标签 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");
}

为什么在这种情况下,方法 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/

相关文章:

c - 逐节读取文件内容

.NET 如何检查路径是否是文件而不是目录?

c - 如何将字符串和整数添加到数组然后打印到文本文件

c - "*** stack smashing detected ***"带文件读写

java - 尝试使用 gridBagLayout 在 JTable 上显示 JTextField

java - jfreechart自定义饼图显示绝对值和百分比

java - 为什么servlet-api.jar的状态会从测试状态变成编译状态?

python - 读取未知编码的文件

java - 结合 MDB、JPA 和 JTA

java - 类和父类(super class)数组的有界通配符