Javaで特定のフォルダ以下を一括で削除するメソッドは無いらしい。
1 |
$ rm -rf aaa |
というのが出来ないってことです。
Javaの再帰 (recursive) を使ってフォルダを削除
Fileクラスのdeleteメソッドは、1つのファイルしか削除できません。
空フォルダの削除は可能ですが、複数階層のディレクトリとなると少し工夫が必要です。
プログラム的に解決するには、再帰 (recursive call) を使うことです。
再帰とは、ある関数の中で自分自身を呼び出すことを言います。
・https://urashita.com/archives/1291
Javaで再帰 (recursive) を使ってフォルダを削除するサンプルは以下をご覧ください。
・https://stackoverflow.com/questions/779519/delete-directories-recursively-in-java
・https://www.sejuku.net/blog/20626
・http://hensa40.cutegirl.jp/archives/750
再帰のプログラムでは、無限ループにならないように、元の関数にもどる条件が必要になります。
指定したディレクトリの配下にファイルがある場合は、listFilesメソッドで取得したリスト分ループし、ファイルの場合は再帰的に自身を呼び出してファイルを削除しています。
Apache commons ioのFileUtilsでフォルダを削除
もう少し簡単な方法として、Apache commons ioのFileUtilsを使う方法があります。
1 |
FileUtils.deleteDirectory(new File("directory")); |
コメント