廢話不多說,直接上代碼:
/**
* 根據路徑刪除指定的文件夾或文件,無論存在與否
* @param sPath 要刪除的文件夾或文件
* @param selfDeleted 是否文件夾目錄本身
* @return 刪除成功返回 true,否則返回 false。 文件夾 或 單個文件
*/
public static boolean DeleteFolderOrFile(String sPath,boolean selfDeleted) {
boolean flag = false;
File file = new File(sPath);
// 判斷目錄或文件是否存在
if (!file.exists()) { // 不存在返回 false
return flag;
} else {
// 判斷是否爲文件
if (file.isFile()) { // 爲文件時調用刪除文件方法
return deleteFile(sPath);
} else { // 爲目錄時調用刪除目錄方法
return deleteDirectory(sPath,selfDeleted);
}
}
}
/**
* 刪除目錄(文件夾)以及目錄下的文件
* @param sPath 要刪除的文件夾路徑
* @param selfDeleted 是否文件夾目錄本身
* @return 目錄刪除成功返回true,否則返回false 文件夾
*/
public static boolean deleteDirectory(String sPath,boolean selfDeleted) {
//如果sPath不以文件分隔符結尾,自動添加文件分隔符
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
//如果dir對應的文件不存在,或者不是一個目錄,則退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
boolean flag = true;
//首先刪除子目錄
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
//刪除子文件
if (files[i].isFile()) {
flag = deleteFile(files[i].getAbsolutePath());
if (!flag) break;
} //刪除子目錄
else {
flag = deleteDirectory(files[i].getAbsolutePath(),true);
if (!flag) break;
}
}
if (!flag) return false;
//然後刪除當前目錄
if(selfDeleted){
if (dirFile.delete()) {
return true;
} else {
return false;
}
}
else{
return true;
}
}
/**
* 刪除單個文件
* @param sPath 被刪除文件的文件名
* @return 單個文件刪除成功返回true,否則返回false 單個文件
*/
//真正幹活的小工,上面兩個是包工頭
public static boolean deleteFile(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路徑爲文件且不爲空則進行刪除
if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
return flag;
}