私はJava 6を使用しています。
n 日より古いファイルを削除する必要があるメソッドを作成しています。これはハウスキーピングの仕事で、スケジュールに従って実行されます。
これを行う最善の方法は何ですか?
- ファイルをチェックして削除するメソッドを Java で記述します。しかし、Java を使用すると、ファイルの作成時間を取得できると思います。
- perl で記述し、Java からスクリプトを呼び出します。
他の提案も大歓迎です。
私はJava 6を使用しています。
n 日より古いファイルを削除する必要があるメソッドを作成しています。これはハウスキーピングの仕事で、スケジュールに従って実行されます。
これを行う最善の方法は何ですか?
他の提案も大歓迎です。
これは 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
すると、次の日数を経過したパスにあるファイルが再帰的に削除されます。
Java から perl を呼び出すことはありません。それには意味がありません。
*nix ボックスを実行している場合は、bash コマンドを cron で実行するだけです。
Windows を使用している場合は、Java で実行します。そのようなものの例は、ウェブ全体にあります。
Apache Commons-IO、FileUtils、特に isFileOlder(File file, Date date) メソッドを確認してください。JavaDoc へのリンクは次のとおりです。
http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html
そのクラスのファイルを処理するための優れたユーティリティ メソッドが多数あります。