java - 在 Windows 上连续删除早于 X 小时的文件的最有效方法是什么?

标签 java windows algorithm scala filesystems

我有一个不断填满“人工制品”文件的目录。许多不同的程序将它们的临时文件转储到此目录中,并且这些程序不太可能很快变得 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/

相关文章:

java - 在appdynamics中监控java应用程序

Python 可移植、Linux 和 Windows

java - 使用浏览器启动小程序时出现问题

Java:完全删除对象

java - 如何在 java 中使用正则表达式查找字符串中最后一次出现的字符集?

c - 枚举桌面上的所有窗口句柄

windows - 使用 Powershell 将目录中的所有文件夹重命名为单个数字或字符

python - 计算给定谐波节点或多个节点的结果频率,四舍五入到小于 n 的最接近的谐波

algorithm - 用户匹配算法

java - 处理一个大文本文件需要多长时间?