【Java入門】ディレクトリ内のすべてのファイルを再帰的に削除するプログラムの書き方
この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に削除する方法を解説します。サブディレクトリの中にあるファイルも含めて、ファイルだけを削除し、ディレクトリ構造自体は残すプログラムです。
前提となるディレクトリ構成
まず、Dドライブ直下に ExampleDirectory というフォルダがあり、その中に7つのファイルと2つのディレクトリが含まれているものと仮定します。
- SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含む
- SampleDirectory2:SampleFile2.txt と SampleFile3.txt の2つのファイルを含む
この状態から、親ディレクトリである ExampleDirectory 内のすべてのファイル(サブディレクトリ内のファイルも含む)を一括で削除していきます。
サンプルコード
以下のJavaプログラムは、java.io.File クラスを使用して、ExampleDirectory 内のすべてのファイルを再帰的に削除します。
import java.io.File;
import java.io.IOException;
public class DeletingAllFiles {
public static void deleteFiles(File dirPath) {
File filesList[] = dirPath.listFiles();
for(File file : filesList) {
if(file.isFile()) {
file.delete();
} else {
deleteFiles(file);
}
}
}
public static void main(String args[]) throws IOException {
// ディレクトリのFileオブジェクトを作成
File file = new File("D:\\ExampleDirectory");
// すべてのファイルとディレクトリを処理
deleteFiles(file);
System.out.println("Files deleted........");
}
}コードのポイント
- listFiles() メソッド:対象ディレクトリ内のすべてのファイルとサブディレクトリを
Fileオブジェクトの配列として取得します。 - isFile() メソッド:要素が通常のファイルかどうかを判定します。ファイルであれば
delete()を呼び出して削除します。 - 再帰呼び出し:要素がディレクトリだった場合は、自分自身(
deleteFiles())を再度呼び出すことで、階層の深い場所にあるファイルもすべて処理できます。
なお、このプログラムではファイルのみを削除するため、実行後もディレクトリ(フォルダ)自体は残ります。ディレクトリごと削除したい場合は、別途 file.delete() をディレクトリにも適用する必要があります。
実行結果
Files deleted........
プログラムを実行すると、上記のメッセージが出力され、ExampleDirectory およびそのサブディレクトリ内のすべてのファイルが削除されます。
-
Javaでディレクトリ内のjpgファイル一覧を取得する方法
FilenameFilterインターフェースを使った方法Fileクラスのlist(FilenameFilter filter)メソッドは、現在のFileオブジェクトが表すパスに存在するすべてのファイルおよびディレクトリの名前をString配列として返します。ただし、返される配列には、指定したフィルター条件を満たすファイル名のみが含まれます。FilenameFilterは、次の単一のメソッドを持つJavaのインターフェースです。accept(File dir, String name)拡張子に基づいてファイル名を取得したい場合は、このインターフェースを実装したクラスを作成し、そのインスタンスをF
-
Javaでディレクトリ内のすべてのファイルを再帰的に一覧表示する方法
この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に一覧表示するプログラムを解説します。サブディレクトリの中にあるファイルまで含めて取得できるため、フォルダ全体の内容を把握したい場合に便利なテクニックです。 前提となるディレクトリ構成 Dドライブ直下に「ExampleDirectory」というフォルダがあり、その中に7つのファイルと2つのサブディレクトリが格納されていると仮定します。 各サブディレクトリの内容は以下の通りです。 SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含みます。 Sa