嗨,我在 java 中使用了很多临时文件,我的问题是它们没有被删除。
无需实现我自己的临时文件管理处理(我承认你并不难,但我很懒,还有很多事情要做,如果我可以节省为此更好地重新发明轮子)有没有办法确保临时文件磁盘上的内容将以相当常规的方式被删除。
1 - 使用 File tmp = File.createTempFile(),当然我可以说 tmp.deleteOnExit() 但是如果事情在服务中运行,它退出的唯一方式是当它崩溃(很少发生)或系统崩溃时(就像驱动器完全充满临时文件并推翻集群时......哎呀!)
理想情况下,垃圾收集器会在某个时间点收集创建的实例,并且由于应用程序中有很多空闲时间,如果 GC 可以完成清理并实际删除磁盘以及从内存中取消引用实例时。
我现在看到的唯一方法是重载 File 类并添加一个最终方法......如果我这样做,还不如使用我自己的临时文件管理器!
长话短说,我也可以使用垃圾收集器来清理系统资源(即文件)吗?
谢谢大家的答案。我接受了 Christoffer 的方法,因为它是最容易实现的,也是我最终要做的。
我想经过这么多年的清理工作让我忘记了在 C++ 的好日子里我本以为要努力做的基本家务。