Monday, March 9, 2009 / Java

Java でディレクトリを確実に削除するコード

Java.io.Fileには、delete() というメソッドがあるので、それを呼び出せば、ファイルやディレクトリは削除できる。 ただし、ディレクトリの場合、その中にファイルやサブディレクトリがあると削除が失敗する。
そこで以下のように再帰的にサブディレクトリにさかのぼって、ファイルを消した上で、ディレクトリを消すという方法で、削除する。

実装はこんな感じです。

private static void delete(File f){
    if( f.exists()==false ){
       return ;
    }

    if(f.isFile()){
       f.delete();
    }

    if(f.isDirectory()){
       File[] files=f.listFiles();
       for(int i=0; i<files.length; i++){
         delete( files[i] );
       }
       f.delete();
    }
}

static public void main(String[] args){
    delete(new File("mydir"));
}

ちなみに groovy だったら

new File('mydir').deleteDir()

するだけです。