2

我正在使用 Java 6。

我正在编写一种方法,我必须删除超过 n 天的文件。这将是家政工作,按计划运行。

做这个的最好方式是什么?

  1. 用Java编写方法来检查和删除文件。但我认为使用 Java 我们可以获得文件创建时间。
  2. 用 perl 编写并从 Java 调用脚本。

也欢迎任何其他建议。

4

3 回答 3

2

你可以从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将递归删除路径中早于几天的文件。

于 2012-04-14T10:01:48.977 回答
1

我不会从 Java 调用 perl。没有意义。

如果你正在运行一个 *nix 机器,只需 cron 一个 bash 命令来执行它。

如果您使用的是 Windows,请使用 Java。这种事情的例子遍布网络。

于 2012-04-13T17:14:43.773 回答
0

检出 Apache Commons-IO、FileUtils,尤其是 isFileOlder(File file, Date date) 方法。这是 JavaDoc 的链接:

http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html

有很多很棒的实用方法来处理该类中的文件。

于 2012-04-13T17:26:37.580 回答