ファイル/デイレクトリを再帰的に削除する。
ファイル/ディレクトリを再帰的に削除する関数です。
- File.delete()を使って削除します。
- 存在するにもかかわらずFile.delete()で削除できなかった場合、deleteOnExit()を設定してVM終了時に削除を試みます。
- デイレクトリは、中にファイルがあると削除できないため、先に消してから削除します。
/** * ファイル/ディレクトリを削除する。 * @param root 削除対象 */ public static final void clean( File root ) { if ( root == null || !root.exists() ) { return; } if ( root.isFile() ) { // ファイル削除 if ( root.exists() && !root.delete() ) { root.deleteOnExit(); } } else { // ディレクトリの場合、再帰する File[] list = root.listFiles(); for ( int i = 0 ; i < list.length ; i++ ) { clean( list[i] ); } if ( root.exists() && !root.delete() ) { root.deleteOnExit(); } } }
Javaだとちょい面倒ですね。ちなみにRubyだと2行で済みます。
require "fileutils" FileUtils.rm_rf "./target"