仕事で、Junitテストの為、javaでfileを削除する必要が出てきて、調査して、わかったことをまとめたので、共有します。
・背景:
ファイル出力のバッチがありまして、複数のテストケースを一緒に検証するには、
前のテストケースの出力結果を確認してから、削除しないといけません。
・実現方法:
①、setUp()メソッドに@Beforeをつけます。Junitには、テストメソッドを実行する前に実行される特別なメソッドとして@Before
アノテーションが用意されています。このアノテーションが付与されたメソッドは、テストメソッドが実行される前に毎回実行されます。
②、setUp()メソッドに下記の処理に追加します。
String folderPath = “/path/to/folder”; // 削除するフォルダのパスを指定
deleteFolderContents(new File(folderPath)); // フォルダの中身を全て削除
③、deleteFolderContents()メソッドを定義します。
public static void deleteFolderContents(File folder) {
File[] contents = folder.listFiles();
if (contents != null) {
for (File file : contents) {
if (file.isDirectory()) {
deleteFolderContents(file); // ディレクトリの場合は再帰的に削除
} else { // ファイルの場合は削除
file.delete();
}
}
}
}
・結果:
指定されたフォルダの中身を全て削除するために、deleteFolderContents
というメソッドを定義しています。deleteFolderContents
メソッドでは、listFiles
メソッドを使ってフォルダ内のファイルとフォルダを取得し、フォルダであれば再帰的にdeleteFolderContents
メソッドを呼び出して削除を繰り返します。ファイルであればdelete
メソッドで削除します。
また、フォルダーごとに削除したいのであれば、「FileUtils.deleteDirectory(directory);」を使えば、簡単に削除できます。