io流在刪除文件夾的時候,該文件夾里面必須沒有文件,如果存在文件,則無法刪除(window系統也是如此,window系統是通過遞歸的方式來先刪除文件夾里面的文件,再刪除該文件夾的方式來刪除的!),所有必須通過程序先刪除該文件夾里面的文件,再刪除這個文件夾!
//刪除指定文件夾下所有文件
//param path 文件夾完整絕對路徑
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);//先刪除文件夾里面的文件
delFolder(path + "/" + tempList[i]);//再刪除空文件夾
flag = true;
}
}
return flag;
}
//刪除文件夾
//param folderPath 文件夾完整絕對路徑
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //刪除完里面所有內容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); //刪除空文件夾
} catch (Exception e) {
e.printStackTrace();
}
}
//調用方法測試
public void test(){ String path = "C:/xx1/xx2"; delFolder(path);//會把xx2下的所有文件包括xx2這個文件夾都刪了 }
