java – 如何使用垃圾收集来删除文件?
嗨我在
java中使用了很多临时文件,我的问题是它们不会被删除.
无需实现我自己的临时文件管理处理(不是很难,我授予你,但我很懒,加上很多事情要做,如果我可以保存重新发明轮子,那就更好了)有没有办法确保临时文件在磁盘上将以相当规律的方式被删除. 1 – 使用File tmp = File.createTempFile(),确定我可以说tmp.deleteOnExit()但是如果事物在服务中运行它退出的唯一方式是它崩溃(很少发生),或者当系统崩溃时(比如当驱动器完全充满临时文件并翻倒集群时……哎呀!) 理想情况下,创建的实例在某些时候被垃圾收集器收集,并且由于应用程序中有很多空闲时间,如果GC可以完成它的清理并实际删除文件,那就太花哨了.从内存中取消引用实例时也可以使用磁盘. 我现在看到的唯一方法是重载File类并添加一个finalized方法……如果我这样做,那么可以选择我自己的临时文件管理器! 长话短说,我可以使用垃圾收集器来清理系统资源(即文件)吗? 谢谢大家的答案.我接受了Christoffer,因为它是最简单的实现,也是我最终做的事情. 我想,经过这么多年的清理工作让我忘记了基本的家务管理,尽管我在C的好日子里做了很多努力. 解决方法
你当然可以.问题是你是否真的想:)
我实际上在野外遇到过这个问题;正如您所注意到的,在运行服务而不是应用程序时,使用deleteOnExit()清除临时文件是没用的.我发现最稳定的解决方案是重构程序流,以便在每个任务的基础上创建临时文件,并在不再需要时显式删除. 如果您以任何其他方式执行此操作,即如果程序无法断定在执行期间是否应保留或丢弃临时文件,则可能存在设计问题.在某些管理器工具中包装文件只会推迟“真正的”解决方案;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 将openssh公钥转换为ssh2(RFC 4716)格式
- JAVA中日期 yyyy-MM-dd HH:mm:ss和yyyy-MM-dd
- java – 无法获取唯一的List元素
- java – 构造函数中的Setter方法
- java – 为什么Toolkit.getDefaultToolkit().bee
- Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩
- java – Jackson无法反序列化为ForeignCollectio
- Java可以在循环中优化“变异”BigInteger操作吗?
- 我应该将java Stream.map函数与switch语句一起使
- java – 为什么这个GridBagLayout没有按计划出现