目录
前言
记录一次用到的文件、多级文件夹删除。
一、工具类测试
- 以下代码复制即用
import java.io.File;
/**
* 删除文件、文件夹测试
*/
public class fileTest {
public static void main(String[] args) {
boolean flag1 = deleteFileOrDirectory("D:\\test\\2023\\04\\1.pdf");
boolean flag2 = deleteFileOrDirectory("D:\\test\\2023\\03");
System.out.println(flag1);
System.out.println(flag2);
}
/**
* 删除文件、文件夹
*
* @param path 文件路径
* @return 返回true(删除成功),返回false(删除失败)
*/
public static boolean deleteFileOrDirectory(String path) {
File file = new File(path);
if (file.exists()) {//判断文件是否存在
if (file.isFile()) {//判断是否为文件
return deleteFile(path);//删除文件
} else {
return deleteDirectory(path);//删除文件夹
}
} else {
return false;//删除失败
}
}
/**
* 删除文件
*
* @param path 文件路径
* @return 返回true(删除成功),返回false(删除失败)
*/
public static boolean deleteFile(String path) {
File file = new File(path);
if (file.isFile() && file.exists()) {
file.delete();
System.out.println("删除文件成功:" + path);
return true;
} else {
System.out.println("删除文件失败:" + path);
return false;
}
}
/**
* 删除文件夹(先删文件再删目录)
*
* @param path 文件夹路径
* @return 返回true(删除成功),返回false(文件夹不存在)(删除失败)
*/
public static boolean deleteDirectory(String path) {
if (!path.endsWith(File.separator)) {
path = path + File.separator;//补齐文件分隔符
}
File directoryFile = new File(path);
//文件不存在、不是一个目录就打印退出返回false
if (!directoryFile.exists() || !directoryFile.isDirectory()) {
System.out.println("文件夹不存在" + path);
return false;
}
boolean flag = true;
File[] files = directoryFile.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());
if (!flag) {
break;
}
}
}
if (!flag) {
System.out.println("删除文件夹失败");
return false;
}
if (directoryFile.delete()) {//最后删除当前文件夹
System.out.println("删除文件夹成功:" + path);
return true;
} else {
System.out.println("删除文件夹失败:" + path);
return false;
}
}
}