我有一个不断填满“人工制品”文件的目录。许多不同的程序将它们的临时文件转储到此目录中,并且这些程序不太可能很快变得 self 清理。
与此同时,我想编写一个程序,当文件变得陈旧时(我将其定义为“超过 30 分钟”)不断删除该目录中的文件。
一个典型的方法是有一个定时机制,列出目录中的文件,过滤旧的东西,然后删除旧的东西。但是,在我的案例中,这种方法的性能不是很好,因为可以想象,这个目录可能包含 10s 或数十万个尚未达到陈旧条件的文件。因此,这种方法将不断循环遍历相同的数千个文件以查找旧文件。
我真正想做的是实现某种目录监听器,它会收到添加到目录的任何新文件的通知。然后,此监听器会将这些文件添加到队列中,以便在以后删除。但是,似乎没有办法在我编程的语言(JVM 语言,如 Java 和 Scala)中实现这样的解决方案。
因此:我正在寻找在 Windows 上保持目录“尽可能干净”的最有效方法,最好使用 JVM 语言。此外,虽然我从未使用 Powershell 编程,但如果它提供这种功能,我会考虑它。最后,如果有第 3 方工具可以执行此类操作,我很想听听。
谢谢。
最佳答案
为什么不能发布目录system command按最旧的顺序排序: c:>目录/OD
获取结果并删除所有早于阈值的文件,如果没有足够旧的文件则 hibernate 。
将其与 Timer or Executor 结合起来设置为 1 秒 - 1 分钟的粒度,这可确保文件堆积的速度不会快于您删除它们的速度。
关于java - 在 Windows 上连续删除早于 X 小时的文件的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1134758/