当前位置: 首页 > 知识库问答 >
问题:

在jvm退出前删除调用deleteOnExit的文件

孔权
2023-03-14

创建一个java file对象并调用其deleteOnExit,然后以编程方式调用delete,关闭JVM或程序退出

deleteOnExit是否会抛出任何异常,因为文件已经通过程序删除了?

共有1个答案

鞠晋
2023-03-14

如果文件已经被删除,什么也不会发生。但是,如果重新创建它,它可能会被删除。

即使file#delete也不会引发异常,如果该文件不存在,则无法删除。在这种情况下,它只返回false

但是,文件#deleteonexit保存对文件的引用,即使手动删除该文件也会保留该引用。多次这样做将导致对堆中挂起的已删除文件对象的引用越来越多,从而导致内存泄漏(请参见此处),因为您也不能中止文件#deleteonexit:

一旦请求删除,就不可能取消该请求。因此,这种方法应谨慎使用。

 类似资料:
  • 问题内容: 我制作了一个命令行应用程序,在其中压缩文件夹并在本地服务器上共享供他人下载。我想做的是关闭服务器后立即删除压缩文件夹的副本。这是我的代码: 当我按下ctrl- c时,程序退出并且main函数关闭,结果,是否应该执行os.Remove(xyz)?去的游览说,推迟执行该表达式时,函数返回。在这里,我不觉得main有机会退还任何东西。 有什么解决方法可以实现我要完成的任务?我脑子里有一些解决

  • 问题内容: JVM正常退出后是否删除目录?还是我需要手动递归删除临时目录内容? 问题答案: 按照API的要求,不,不是,您需要使用方法手动删除目录。 与createTempFile方法一样,此方法只是临时文件工具的一部分。关机挂钩或File.deleteOnExit()机制可用于自动删除目录。

  • null (如果我在上面的假设上错了,请纠正我) 在我的环境中,我面临着很高的磁盘利用率,我发现'df'和'du'命令的输出存在超过30GB的差异('df'查看FS本身的状态,而'du'忽略已删除的文件描述符)。 如果删除deleteOnExit(),我将不得不手动删除所有对象。这样,我的指针仍然处于打开状态(在linux上使用查看打开的文件),为什么会出现这种情况? 如果我删除delete(),

  • 我正在使用Python和MySQLdb向数据库中添加行。似乎当我的脚本退出时,行会被删除。在脚本退出之前,我的最后一行在表上执行“select*”,这显示了我的一行。当我重新运行脚本时,第一行(在打开连接之后)执行相同的“select*”并返回零结果。我在这里真的是不知所措。我已经在这方面工作了大约2个小时,不能理解什么可以访问我的数据库。 此外,在运行脚本之间,我从终端手动运行“select*”

  • 我在我正在创建的堆积面积图中的函数中遇到了一些问题。 链接 我有一些功能,用户可以通过单击图例矩形/颜色来/图表中的数据。我知道数据正在根据控制台消息和Y轴变化刻度进行更新,但图表中的数据不会更改。例如,如果用户取消选择类别,橙色图层应消失,“失败”和“通过”图层应重新调整。 问题似乎出现在小提琴的第 214 行到第 234 行,特别是在我调用 的地方: 我得到的错误是对象[对象数组]没有方法我尝

  • 我正在C:drive文件夹中创建一个名为abc的dat文件,如下所示,现在我的文件每天都会生成,假设我的文件是今天生成的,然后tommrow也会像往常一样生成,但在生成tommrow时,我必须确保删除前一天的文件,因为该文件夹中的空间有限,每次需要执行此检查时,前一天的文件都会从该文件夹中删除,请建议如何实现这一点。。