一般社団法人 全国個人事業主支援協会

COLUMN コラム

仕事で、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);」を使えば、簡単に削除できます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア