プログラミング忘備録と日記と時々育児の話

アジャイルとAIに関心を持っているSE。1児の母。エキスパートというよりはジェネラリスト。

Javaでフォルダ内のファイルごとフォルダ削除したい場合はdeleteDirectoryが便利

File.deleteは中身があるとFalseが返ってきてしれっと終わるから…

なのですが、org.apache.commonsにいると思ったらいなかった。
Tomcat7ではdeleteDirectoryはutil.http.fileuploadにいた。。。

ので、こいつをimportしておく↓
org.apache.tomcat.util.http.fileupload.FileUtils

ディレクトリ削除系のメソッドはこんな感じに

// 例えばこんなフォルダがあるとして
String path = System.getProperty("user.dir") + File.separator + "tmp";
File dir = new File(path);
dir.mkdir;

// こんなファイルを作るとして
File newfile = new File(path + "¥¥newfile.txt");
newfile.createNewFile();

// FileUtilsならファイルごとフォルダ削除可能
FileUtils.deleteDirectory(dir);

// フォルダ内のファイルを全部削除(フォルダは残す)のも一発
// deleteDirectoryは↓をしてからFileクラスのdeleteをしている
FileUtils.cleanDirectory(dir);

// 指定されたパスのものを削除する。パスがフォルダだったら中身ごと(サブディレクトリも)削除する。
// Boolean型で成否を返すFile.delete()と違い、削除できなかった場合は例外が発生する
FileUtils.forceDelete(dir);

一定期間でフォルダごと消す系の処理(なんかのログフォルダとか、前回実行時のバックアップ消すみたいなの)に便利!