##はじめに
Javaで○日以上古いファイルを検出するというプログラムを書く機会があったので、備忘として残しておく。
あくまで一つの例として。
##LocalDateを使う
Dateでも可能だが、より新しいLocalDateを使ってみる。
Long lastModified = targetFile.lastModified();
LocalDate lastDate = Instant.ofEpochMilli(lastModified).atZone(ZoneId.systemDefault()).toLocalDate();
これでファイルクラスで宣言した対象のファイルから最終更新日を取得する。
エポック時間をLocalDate型に変換しているイメージ。
LocalDate daysBefore = LocalDate.now().minusDays(5);
LocalDateクラスのnow()で本日の日付を取得する。
今回は5日前の日付を対象にするとして、minusDays(5)で取得することができる。
if (lastModified.isBefore(base) || lastModified.isEqual(base))
if (lastModified.compareTo(base) <= 0)
if (lastModified.until(LocalDate.now(), ChronoUnit.DAYS) >= 5)
あとはこんな感じのif文を書いてあげれば指定した日付以前のファイルを炙り出せるはず。
注意したいのはisBefore()だけでは5日より前しか取れないこと。
isEqual()で5日前も取れるようにしてあげる。
追記
@swordoneさんからコメントをいただき、
if文の条件式を追加しました。
##まとめ
ここにFileクラスをピピーっとぶっ込んでやるといい感じなる。
ご指摘等ございましたらコメントお願いします。