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這個文件夾都刪了 }