java中刪除目錄事先要刪除目錄下的文件或子目錄。用遞歸就可以實(shí)現。
public void del(String filepath) throws IOException{
File f = new File(filepath);//定義文件路徑
if(f.exists() && f.isDirectory()){//判斷是文件還是目錄
if(f.listFiles().length==0){//若目錄下沒(méi)有文件則直接刪除
f.delete();
}else{//若有則把文件放進(jìn)數組,并判斷是否有下級目錄
File delFile[]=f.listFiles();
int i =f.listFiles().length;
for(int j=0;j<i;j++){
if(delFile[j].isDirectory()){
del(delFile[j].getAbsolutePath());//遞歸調用del方法并取得子目錄路徑
}
delFile[j].delete();//刪除文件
}
}
del(filepath);//遞歸調用
}
}----------------------------------------------------------------------------------------------------------------
刪除一個(gè)非空目錄并不是簡(jiǎn)單地創(chuàng )建一個(gè)文件對象,然后再調用delete()就可以完成的。要在平臺無(wú)關(guān)的方式下安全地刪除一個(gè)非空目錄,你還需要一個(gè)算法。該算法首先刪除文件,然后再從目錄樹(shù)的底部由下至上地刪除其中所有的目錄。
只要簡(jiǎn)單地在目錄中循環(huán)查找文件,再調用delete就可以清除目錄中的所有文件:
static public void emptyDirectory(File directory) {
File[ ] entries = directory.listFiles( );
for(int i=0; i<entries.length; i++) {
entries[i].delete( );
}
}
這個(gè)簡(jiǎn)單的方法也可以用來(lái)刪除整個(gè)目錄結構。當在循環(huán)中遇到一個(gè)目錄時(shí)它就遞歸調用deleteDirectory,而且它也會(huì )檢查傳入的參數是否是一個(gè)真正的目錄。最后,它將刪除作為參數傳入的整個(gè)目錄。
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的變種中沒(méi)有File.listFiles方法。所以只能用File.list,它的返回值一個(gè)字符串數組,你要為每個(gè)字符串構造一個(gè)新的文件對象。
聯(lián)系客服