java – 如何使用垃圾收集来删除文件?

前端之家收集整理的这篇文章主要介绍了java – 如何使用垃圾收集来删除文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨我在 java中使用了很多临时文件,我的问题是它们不会被删除.

无需实现我自己的临时文件管理处理(不是很难,我授予你,但我很懒,加上很多事情要做,如果我可以保存重新发明轮子,那就更好了)有没有办法确保临时文件在磁盘上将以相当规律的方式被删除.

1 – 使用File tmp = File.createTempFile(),确定我可以说tmp.deleteOnExit()但是如果事物在服务中运行它退出的唯一方式是它崩溃(很少发生),或者当系统崩溃时(比如当驱动器完全充满临时文件并翻倒集群时……哎呀!)

理想情况下,创建的实例在某些时候被垃圾收集器收集,并且由于应用程序中有很多空闲时间,如果GC可以完成它的清理并实际删除文件,那就太花哨了.从内存中取消引用实例时也可以使用磁盘.

我现在看到的唯一方法是重载File类并添加一个finalized方法……如果我这样做,那么可以选择我自己的临时文件管理器!

长话短说,我可以使用垃圾收集器来清理系统资源(即文件)吗?

谢谢大家的答案.我接受了Christoffer,因为它是最简单的实现,也是我最终做的事情.

我想,经过这么多年的清理工作让我忘记了基本的家务管理,尽管我在C的好日子里做了很多努力.

解决方法

你当然可以.问题是你是否真的想:)

我实际上在野外遇到过这个问题;正如您所注意到的,在运行服务而不是应用程序时,使用deleteOnExit()清除临时文件是没用的.我发现最稳定的解决方案是重构程序流,以便在每个任务的基础上创建临时文件,并在不再需要时显式删除.

如果您以任何其他方式执行此操作,即如果程序无法断定在执行期间是否应保留或丢弃临时文件,则可能存在设计问题.在某些管理器工具中包装文件只会推迟“真正的”解决方案;)

猜你在找的Java相关文章