本サイトはプロモーション(広告)が含まれています。

【Java】ファイルの削除でワイルドカードみたいに特定のファイルのみ削除する方法

【Java】ファイルの削除でワイルドカードみたいに特定のファイルのみ削除する方法

Javaでファイルを削除する際はdelete()メソッドで削除していきます。

 一方でワイルドカードみたいに特定のファイルのみを削除するメソッドは無いですが、色々なメソッドを組み合わせることで特定ファイルのみ削除することは可能です。

 具体的には以下のように実装すればワイルドカードを使用したみたいに特定のファイルを削除できます。

 // 削除したいディレクトリのパスを指定
File dir = new File("C:\\eclipse\\workspace\\test");

// ディレクトリ内のファイルを配列に格納
File[] files = dir.listFiles();
// ファイルの配列を可変式のListに変換
List<File> WKlist = Arrays.asList(files);
List<File> filelist= new ArrayList <>(WKlist);

// 削除対象のファイルListを作成
List<Object> 削除対象filelist= new ArrayList <>();
// 処理実行前のファイル一覧を出力
System.out.println(filelist);
// 処理実行前のファイル数を出力
System.out.println(filelist.size());

// ★今回はdummy*となるデータを削除するケースを想定
for(File file: files) {
    String str = file.toString();
    int 位置 = str.indexOf("dummy");
    // indexOfメソッドdummyを含む場合は0以上を返すため
    // dummyを含むものを削除対象に加える
    if (位置 >= 0) {
        削除対象filelist.add(str);
    }
}
// 削除対象のファイル数を
int 削除ファイル数 = 削除対象filelist.size();
for(int i = 0; i < 削除ファイル数; i++) {
    // Listから削除対象ファイルを取り出し、繰り返し削除
    String str = (String) 削除対象filelist.get(i);
    File f = new File(str);
    f.delete();
}
// ディレクトリ内のファイルを配列に格納
files = dir.listFiles();
// ファイルの配列を可変式のListに変換
WKlist = Arrays.asList(files);
filelist= new ArrayList <>(WKlist);
// 処理実行後のファイル一覧を出力
System.out.println(filelist);
// 処理実行後のファイル数を出力
System.out.println(filelist.size());

//実行結果
[C:\eclipse\workspace\test\dummy1.csv, C:\eclipse\workspace\test\dummy2.csv,
 C:\eclipse\workspace\test\test1.csv, C:\eclipse\workspace\test\test2.csv]
4
[C:\eclipse\workspace\test\test1.csv, C:\eclipse\workspace\test\test2.csv]
2

Javaの記事一覧へ

PAGE TOP