Java ファイル削除・ディレクトリ(フォルダー)削除する方法
Javaでファイル削除・ディレクトリ(フォルダー)削除する方法です。
Javaでファイルおよびディレクトリの削除を行うには File.delete
メソッドを使用しますが、ディレクトリを削除する場合には注意が必要です。
ディレクトリ内にファイルやサブディレクトリが存在する場合は、正常に削除されません。強制的にディレクトリを削除したい場合には、対象ディレクトリ内のファイルやサブディレクトリを先に削除する必要があります。
対象ディレクトリ内のサブディレクトリを削除するには 再帰的な処理 が必要です。
再帰(さいき)的とは、記述の中に自身への参照があらわれることをいいます。
ここでは Javaでファイル削除・ディレクトリ(フォルダー)削除する方法 を紹介します。
サンプルソース
以下が、Javaでファイル削除・ディレクトリ(フォルダー)削除するサンプルソースです。
/**
* ファイルおよびディレクトリを削除します。<br/>
* ディレクトリが指定された場合は、ディレクトリ内のファイルも強制的に削除されます。
*
* @param path フルパスを指定します。(C:サンプル)など
* @return 削除件数
*/
public static int delete(String path) {
File f = new File(path);
// 存在チェック
if ( !f.exists() )
return 0;
// ファイルの場合
if ( f.isFile() ) {
f.delete();
return 1;
}
int counter = 0;
// ディレクトリの場合
if( f.isDirectory() ) {
// ディレクトリ内の一覧を取得
File[] files = f.listFiles();
// ディレクトリ内のファイルもしくはディレクトリを削除する
for ( int i = 0; i < files.length; i++ ) {
// 再帰処理
delete( files[i].getPath() );
}
// ディレクトリ削除
f.delete();
counter++;
}
return counter;
}
delete メソッド
メソッドの説明です。
引数 | 説明 |
---|---|
path | フルパスを指定します。(C:/サンプル)など |
戻り値 |
---|
削除件数 |
「再帰処理」とコメントされている部分に注目してください。自身の処理の中で、自身を呼び出しています。これが「再帰(さいき)」と言われる処理です。
テスト
それでは早速テストしてみましょう。このソースはどのプロジェクトでも共通で使えるものです。ユーティリティクラスを作って管理しましょう。
public class FileUtilsTest {
public static void main(String[] args) {
FileUtils.delete("C:/Temp/サンプル");
}
}
ここでは FileUtils というクラスを作ってその中の1メソッドとしています。
こうすることでソースを美しく管理することができます♪
「C:/Temp/サンプル」の中は以下のような構成です。saka-en-001, saka-en-002 というディレクトリと saka-en-top.xlsx というファイルが配置されています。
「C:/Temp/サンプル/saka-en-001」の中は以下のような構成です。saka-en-001.xlsx というファイルが配置されています。
「C:/Temp/サンプル/saka-en-002」の中は以下のような構成です。ディレクトリ内は空です。
それでは実行してみましょう。実行してみると、サンプルというディレクトリが削除されます。
間違っても「C:/」と指定してはいけません!OS が起動しなくなります!
まとめ
Javaでファイル削除・ディレクトリ(フォルダー)削除する方法を紹介しました。
ファイル操作は実務でもよく利用します。くれぐれも「C:/」などルートディレクトリは指定しないでください。大事なファイルが消えてからでは復元できません。余計なバグを出さないようにきちんと理解して利用しましょう。
おつかれさまでした。