明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用遞歸方法刪除文件

[摘要]刪除一個非空目錄并不是簡單地創(chuàng)建一個文件對象,然后再調(diào)用delete()就可以完成的。要在平臺無關(guān)的方式下安全地刪除一個非空目錄,你還需要一個算法。該算法首先刪除文件,然后再從目錄樹的底部由下至上地刪除其中所有的目錄。 只要簡單地在目錄中循環(huán)查找文件,再調(diào)用delete就可以清除目錄中的所有文件:...
刪除一個非空目錄并不是簡單地創(chuàng)建一個文件對象,然后再調(diào)用delete()就可以完成的。要在平臺無關(guān)的方式下安全地刪除一個非空目錄,你還需要一個算法。該算法首先刪除文件,然后再從目錄樹的底部由下至上地刪除其中所有的目錄。

只要簡單地在目錄中循環(huán)查找文件,再調(diào)用delete就可以清除目錄中的所有文件:
static public void emptyDirectory(File directory) {
File[ ] entries = directory.listFiles( );
for(int i=0; i<entries.length; i++) {
entries[i].delete( );
}
}

這個簡單的方法也可以用來刪除整個目錄結(jié)構(gòu)。當(dāng)在循環(huán)中遇到一個目錄時它就遞歸調(diào)用deleteDirectory,而且它也會檢查傳入的參數(shù)是否是一個真正的目錄。最后,它將刪除作為參數(shù)傳入的整個目錄。
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,它的返回值一個字符串?dāng)?shù)組,你要為每個字符串構(gòu)造一個新的文件對象。