以下提供兩種刪整個非空資料夾的方法,
但實際翻了一下
但實際翻了一下
FileUtils.deleteDirectory(File folder);
的source code 後發現兩種是一樣的=.=...
另外:
另外:
FileUtils.waitFor(file, 5);
是個好用的東西,他實際上就是在時間內
一直呼叫file.exist(),並且程式會停在這邊,
直到時間到.
這樣就不用自己寫監控檔案下載完了沒XD
一直呼叫file.exist(),並且程式會停在這邊,
直到時間到.
這樣就不用自己寫監控檔案下載完了沒XD
package test_fb_api;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
//http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#deleteDirectory%28java.io.File%29
public class testDeleteNonEmptyFolder {
public static int tag = 0;
public static void main(String[] args) {
String path = "F:/opt_test/";
String path2 = "F:/opt_test2/";
File file = new File(path);
System.out.println(FileUtils.waitFor(file, 5));
System.out.println("deleteMethodB:");
System.out.println("exists before delete : " + file.exists());
deleteMethodB(file);
System.out.println("exists after delete : " + file.exists());
System.out.println("===========================");
System.out.println("deleteMethodA:");
File file2 = new File(path2);
// set tag = 0 , because "deleteMethodA" is recursive.
// so you don't know where go false, or is still folder
tag = 0;
System.out.println("exists before delete : " + file2.exists());
deleteMethodA(file2);
if (tag == 0) {
System.out.println("deleteMethodA: delete success");
} else {
System.out.println("deleteMethodA: have subFolder: " + tag);
}
System.out.println("exists after delete : " + file2.exists());
}
public static void deleteMethodB(File folder) {
try {
FileUtils.deleteDirectory(folder);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
public static void deleteMethodA(File folder) {
// check if folder file is a real folder
if (folder.isDirectory()) {
File[] list = folder.listFiles();
if (list != null) {
for (int i = 0; i < list.length; i++) {
File tmpF = list[i];
if (tmpF.isDirectory()) {
deleteMethodA(tmpF);
}
if (!tmpF.delete()) {
tag++;
}
}
}
if (!folder.delete()) {
System.out.println("can't delete folder : " + folder);
}
}
}
}

沒有留言:
張貼留言