【发布时间】:2015-08-22 03:13:24
【问题描述】:
我正在使用 Java 6。
我正在编写一种方法,我必须删除超过 n 天的文件。 这将是管家工作,按计划运行。
最好的方法是什么?
- 用Java编写方法来检查和删除文件。但我认为使用 Java 我们可以获得文件创建时间。
- 用 perl 编写并从 Java 调用脚本。
也欢迎任何其他建议。
【问题讨论】:
标签: java perl delete-file
我正在使用 Java 6。
我正在编写一种方法,我必须删除超过 n 天的文件。 这将是管家工作,按计划运行。
最好的方法是什么?
也欢迎任何其他建议。
【问题讨论】:
标签: java perl delete-file
您可以仅从 java 中执行此操作。无需使用 perl。
import java.io.File;
import java.util.Calendar;
public class DeleteOlderThan
{
private static long daysAgo;
private static void delete(File f) {
if (f.isDirectory()) {
for (File l : f.listFiles())
delete(l);
}
if (f.lastModified() <= daysAgo) {
f.delete();
}
}
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1 * new Integer(args[1]));
daysAgo = cal.getTimeInMillis();
delete(new File(args[0]));
}
}
运行java DeleteOlderThan /my/path days 将递归删除路径中早于几天的文件。
【讨论】:
我不会从 Java 调用 perl。没有意义。
如果您正在运行 *nix 机器,只需 cron 执行一个 bash 命令即可。
如果您使用的是 Windows,请使用 Java。这样的例子遍布网络。
【讨论】:
检查 Apache Commons-IO、FileUtils,尤其是 isFileOlder(File file, Date date) 方法。这是 JavaDoc 的链接:
http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html
许多用于处理该类中的文件的实用方法。
【讨论】: