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;
        }
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在 Qt C++ 中删除多级文件夹包括文件可以使用QDir类和QFile类。首先,我们可以使用QDir::removeRecursively()函数来删除整个目录,包括所有子目录和文件。然后,我们可以使用QFile::remove()函数删除单个文件。 以下是一个示例代码,可以删除多级文件夹包括文件: ```cpp #include <QCoreApplication> #include <QDir> #include <QFile> #include <QDebug> void deleteFolder(const QString& folderPath) { QDir dir(folderPath); // 判断文件夹是否存在 if (!dir.exists()) { return; } // 获取文件夹内所有子目录和文件 QFileInfoList fileList = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); // 遍历所有子目录和文件 foreach (QFileInfo fileInfo, fileList) { if (fileInfo.isDir()) { // 如果是目录,则递归删除 deleteFolder(fileInfo.filePath()); } else { // 如果是文件,则直接删除 QFile::remove(fileInfo.filePath()); } } // 删除目录 if (dir.rmdir(folderPath)) { qDebug() << "Folder deleted successfully!"; } else { qDebug() << "Failed to delete folder!"; } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString folderPath = "C:/TestFolder"; // 要删除文件夹路径 deleteFolder(folderPath); return a.exec(); } ``` 在这个示例中,我们首先使用QDir类获取文件夹内所有子目录和文件,然后遍历所有子目录和文件,如果是目录则递归删除,如果是文件则直接删除。最后,我们使用QDir::rmdir()函数删除目录本身。 请注意,删除操作是不可逆的,因此在使用此函数之前,请确定您已经备份了需要保留的文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luvJie-7c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值