Javaでファイルかディレクトリの確認と削除方法

Javaでファイルかディレクトリの確認と削除方法

Javaでディレクトリ配下のファイル or ディレクトリの一覧を表示したり削除したりします。

File folder = new File("D:\\test");

D:\testディレクトリのオブジェクトfolderを作成します。

D:\testディレクトリが存在するか確認するには、exists()メソッドを使用します。

if (folder.exists()) {

}

存在するならtrue、存在しないならfalseを返します。

File[] obj = folder.listFiles();

とすることでfolderディレクトリ配下のファイルとディレクトリをFile配列に格納します。

D:\test配下が以下のような構成だったとします。

D:\test
    ├─a
    ├─b─b.txt
    └─a.txt

objには、a,b,a.txtの3つが格納されます。サブディレクトリ配下のb.txtは格納されません。

obj.isDirectory()でディレクトリかどうか判断できます。

obj.isFile()でファイルかどうか判断できます。

for文でobjをループし、各ディレクトリ、各ファイルを削除します。削除するにはdelete()メソッドを使用します。

for (int i = 0; i < obj.length; i++) { 
    obj[i].delete();
}

これを全部記述すると以下のようになります。

package jp.co.confrage;
import java.io.File;

public class TestMain {
    /**
      * @param args 
      */ 
    public static void main(String[] args) {
        File folder = new File("D:\\test");
        if (folder.exists()) {
            File[] obj = folder.listFiles();
            for (int i = 0; i < obj.length; i++) {
                obj[i].delete();
            } 
        }
    }
}

結果をみるとbフォルダとその配下のb.txtは削除されていません。これはJavaのFileクラスの仕様で、ディレクトリ内が空でない場合は、削除されないです。

空出ないディレクトリも全て削除したい場合は別途メソッドを作ってあげる必要があります。

deleteAllメソッドです。共通クラスに作成しています。

コメント

タイトルとURLをコピーしました