当前位置: 首页 > 面试题库 >

Java文件删除和System.gc()

吉栋
2023-03-14
问题内容

在我的应用程序中,我正在编写一个文件来存储一些执行信息,执行完成后,我想删除临时文件。问题甚至是在文件被流关闭或刷新后,我也无法删除文件。我试过了

Thread.sleep(1000);
file.delete();

而且也没有删除文件。然后我创建了一个while循环

while(!file.delete())
   Thread.sleep(1000);

它一直在循环。然后我加了

System.gc();
file.delete();

而且有效!!!

我已经验证我已经正常关闭或刷新了文件。我想知道为什么我的代码可以使用System.gc()


问题答案:

那似乎表明您没有打电话close()

原因: 在Java的开始时期,该Object.finalize()方法用于清理垃圾收集,并且对于I / O,它执行了close()

在使用该文件(未关闭)之前,无法在Windows上删除该文件。



 类似资料:
  • 问题内容: 在Java中,我想删除包含文件和文件夹的文件夹中存在的所有内容。 此代码不起作用,执行此操作的最佳方法是什么? 问题答案: 如果您使用Apache Commons IO,那么它是单线的: 请参阅FileUtils.deleteDirectory() 番石榴曾经支持类似的功能: 几个版本之前已将其从Guava中删除。 虽然以上版本非常简单,但也很危险,因为它在不告诉您的情况下做出了许多假

  • 我的本地文件夹中有一个csv文件。我想阅读它,删除一列,并替换同一文件夹中的文件。 实际样本数据: 样本数据中的预期数据: 在这种情况下,我想删除列LASTNAME。在Java中可以有效地完成吗?

  • 问题内容: 如何使用node.js删除文件? http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback 我没有看到删除命令? 问题答案: 我想你要用。 有关更多信息,请参见此处。

  • 问题内容: 我正在使用FileWriter写入文件,并注意到即使删除了文件(进程外),FileWriter也不会引发任何异常。 这正常吗? 问题答案: 这取决于您的操作系统: 在Windows上,通常无法删除打开的文件。 在Unix上,完全可以接受删除打开的文件并继续写入(或从中读取)文件。删除文件后,它将不再具有目录条目。但是,其内容将继续存在于磁盘上,直到关闭该文件。一旦所有引用该文件的打开句

  • 我正在尝试将一些文件从一台服务器复制到另一台服务器的共享文件夹,问题是,它有时会起作用,但通常xcopy和robocopy命令会在失败时删除目标文件,即使备份失败,我也需要这些文件留在那里。 为了深入了解细节,在我运行命令的服务器上(Windows 10),我有一堆Tableau文件(. twbx),这些文件通过. JAR文件进行更新,我每天早上运行一个计划任务。 更新文件后,我使用xcopy将它

  • 前面小节介绍了如何使用 touch 和 mkdir 创建文件和目录,本小节介绍如何删除文件和目录。 1. 删除文件 使用 rm 文件名 命令可以删除文件,以删除普通文件为例: ls -l # 列出当前目录下的所有文件 rm test.c # 使用 rm 命令删除 test.c 文件 ls -l # 再次查看当前目录下的所有文件 执行结果如下图: 可以看到 test.c 文件已经被删除了