java实现文件、多级文件夹删除(复制即用)

目录

前言

一、工具类测试


前言

记录一次用到的文件、多级文件夹删除。


一、工具类测试

  • 以下代码复制即用
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;
        }
    }
}

你可能感兴趣的:(Java,io流,文件删除,删除文件夹,file,java)