2

私はJava 6を使用しています。

n 日より古いファイルを削除する必要があるメソッドを作成しています。これはハウスキーピングの仕事で、スケジュールに従って実行されます。

これを行う最善の方法は何ですか?

  1. ファイルをチェックして削除するメソッドを Java で記述します。しかし、Java を使用すると、ファイルの作成時間を取得できると思います。
  2. perl で記述し、Java からスクリプトを呼び出します。

他の提案も大歓迎です。

4

3 に答える 3

2

これは Java からのみ実行できます。パールを使用する必要はありません。

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 ボックスを実行している場合は、bash コマンドを cron で実行するだけです。

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 に答える