今回は、Javaで指定したフォルダの更新日時が一年前のファイルを削除する方法を紹介します。
DelFile.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class DelFile { /** * @param args */ public static void main(String[] args) { //引数に指定されたフォルダパスをもとにファイルを取得 File files = new File(args[0]); File fileArray[] = files.listFiles(); //一年前の日時を取得 Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.YEAR, -1); Date targetDate=calendar.getTime(); // ファイルの一覧を読み込み for (File f : fileArray) { if (f.isFile()) { long lastUpd = f.lastModified(); Date lstUpdDate = new Date(lastUpd); if (lstUpdDate.before(targetDate)) { System.out.println(f.toString());//削除対象のファイルを表示 f.delete();//ファイル削除 } } } } } |
・コードの説明
1 2 3 |
//引数に指定されたフォルダパスをもとにファイルを取得 File files = new File(args[0]); File fileArray[] = files.listFiles(); |
File(arg[0])で引数の最初に指定されたパス内のファイルを取得し、file1.listFiles()で配列にします。
1 2 3 4 5 |
//一年前の日時を取得 Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.YEAR, -1); Date targetDate=calendar.getTime(); |
Calendar型のaddメソッドを使用し、一年前の日時を取得しgetTimeメソッドでDate型に変換します。
1 2 3 4 5 6 7 8 9 10 11 |
// ファイルの一覧を読み込み for (File f : fileArray) { if (f.isFile()) { long lastUpd = f.lastModified(); Date lstUpdDate = new Date(lastUpd); if (lstUpdDate.before(targetDate)) { System.out.println(f.toString());//削除対象のファイルを表示 f.delete();//ファイル削除 } } } |
File型の配列を一つずつ見て、まずlastModifiedメソッドでファイルの更新日を取得し、Date型に変換します。
Date型のbeforeメソッドで一年前と更新日を比較し、
更新日が一年前より以前の場合は、コンソール上に対象のファイルを表示し、ファイルを削除します。
・参照サイト
https://itsakura.com/java-file-list
https://techacademy.jp/magazine/33926