我正在使用 Java 6。
我正在编写一种方法,我必须删除超过 n 天的文件。这将是家政工作,按计划运行。
做这个的最好方式是什么?
- 用Java编写方法来检查和删除文件。但我认为使用 Java 我们可以获得文件创建时间。
- 用 perl 编写并从 Java 调用脚本。
也欢迎任何其他建议。
我正在使用 Java 6。
我正在编写一种方法,我必须删除超过 n 天的文件。这将是家政工作,按计划运行。
做这个的最好方式是什么?
也欢迎任何其他建议。
你可以从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
有很多很棒的实用方法来处理该类中的文件。