刪除一個非空目錄并不是簡單地創建一個文件對象,然后再調用delete()就可以完成的。要在平臺無關的方式下安全地刪除一個非空目錄,你還需要一個算法。該算法首先刪除文件,然后再從目錄樹的底部由下至上地刪除其中所有的目錄。 只要簡單地在目錄中循環查找文件,再調用delete就可以清除目錄中的所有文件: static public void emptyDirectory(File directory) { File[ ] entries = directory.listFiles( ); for(int i=0; i<entries.length; i++) { entries[i].delete( ); } } 這個簡單的方法也可以用來刪除整個目錄結構。當在循環中遇到一個目錄時它就遞歸調用deleteDirectory,而且它也會檢查傳入的參數是否是一個真正的目錄。最后,它將刪除作為參數傳入的整個目錄。 static public void deleteDirectory(File dir) throws IOException { if( (dir == null) || !dir.isDirectory) { throw new IllegalArgumentException( "Argument "+dir+" is not a directory. " ); }
File[ ] entries = dir.listFiles( ); int sz = entries.length;
for(int i=0; i<sz; i++) { if(entries[i].isDirectory( )) { deleteDirectory(entries[i]); } else { entries[i].delete( ); } }
dir.delete(); } 在Java 1.1以及一些J2ME/PersonalJava的變種中沒有File.listFiles方法。所以只能用File.list,它的返回值一個字符串數組,你要為每個字符串構造一個新的文件對象。
|