Qt删除文件夹

Posted www

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt删除文件夹相关的知识,希望对你有一定的参考价值。

写的软件需要进行文件夹的复制,开始不怎么懂就找了个拷贝文件夹的代码测试了一下,运行程序选择了源目录和目标目录相同进行拷贝,结果悲剧了。因为是递归拷贝,导致文件夹被嵌套N层,软件死机,强制结束后,产生的文件夹有N多层,右键删除说文件名太长无法删除。网上找了很多方法都无法清理掉这个嵌套的文件夹,折磨了N久,终于想通,既然是Qt生成的嵌套文件夹,为何不用Qt再写一个删除的程序呢?于是动手查看help,找API函数说明,码代码。

 

//删除文件夹  
bool MainWindow::DelDir(const QString &path)  
{  
    if (path.isEmpty()){  
        return false;  
    }  
    QDir dir(path);  
    if(!dir.exists()){  
        return true;  
    }  
    dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤  
    QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息  
    foreach (QFileInfo file, fileList){ //遍历文件信息  
        if (file.isFile()){ // 是文件,删除  
            file.dir().remove(file.fileName());  
        }else{ // 递归删除  
            DelDir(file.absoluteFilePath());  
        }  
    }  
    return dir.rmpath(dir.absolutePath()); // 删除文件夹  
}  

  

 

这样,新建一个QFileDialog传入文件路径就可以将文件夹彻底删除,不用windows的右键删除了。(在这之前还重启系统去用U盘启动pe系统来删除都没搞定,囧)
使用这个一定要小心,别写错删除了重要的东西,哈哈!

以上是关于Qt删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Qt删除文件夹

Qt编程遇到的问题,我在qt中直接使用C语言的程序片段,有问题 ,求解

qt creator源码全方面分析(2-0)

删除选项卡时在 ActionBar 选项卡片段中运行代码

替换或删除后台堆栈上现有片段的代码不起作用

QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件