利用QDir实现删除选定文件目录下的空文件夹

目录
  • 一、项目介绍
  • 二、项目基本配置
  • 三、UI界面设置
  • 四、主程序实现
    • 4.1 widget.h头文件
    • 4.2 widget.cpp源文件
  • 五、效果演示

一、项目介绍

本文介绍利用QDir删除选定文件目录下的所有空文件夹。

二、项目基本配置

新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设置

UI界面如下:

序号 名称 类型 属性
pbn_del QPushButton text:请选择要删除的目录

四、主程序实现

4.1 widget.h头文件

头文件中只需声明按钮点击槽函数:

private slots:
    void on_pbn_del_clicked();

4.2 widget.cpp源文件

定义函数checkFileOrDirExist检查目录是否存在:

bool checkFileOrDirExist(const QString qstrFileDirOrPath)
{
    bool bRet = false;
    QFileInfo objFileInfo(qstrFileDirOrPath);
    if(objFileInfo.isFile())
    {
        bRet = objFileInfo.exists();
    }
    else if(objFileInfo.isDir())
    {
        bRet = objFileInfo.exists();
    }
    else
    {
        bRet = false;
    }

    return bRet;
}

定义clearEmptyFolder用于删除空的文件夹,返回的类型为bool类型若为true则表示删除成功,若为false则表示删除失败:

/**************************************************
 * 功能:删除空的文件夹
 * 输入参数:
 *      qstrDirPath:文件夹路径
 * 返回值:
 *      bool:true -- 删除成功,false -- 删除失败
 * **************************************************/
bool clearEmptyFolder(const QString& qstrDirPath)
{
    bool bRet = true;

    do
    {
        if(!checkFileOrDirExist(qstrDirPath))
        {
            bRet = true;
            break;
        }

        QDir qdrPath(qstrDirPath);
        qdrPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); //设置过滤器
        QFileInfoList lstFileInfo = qdrPath.entryInfoList();   //获取所有文件信息
        foreach(QFileInfo objFileInfo, lstFileInfo)
        {
            if(objFileInfo.isDir())
            {
                QString qstrSubFilePath = objFileInfo.absoluteFilePath();
                clearEmptyFolder(qstrSubFilePath);

                QDir qdrSubPath(qstrSubFilePath);
                qdrSubPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
                QFileInfoList qlstFileInfo =  qdrSubPath.entryInfoList();
                if(qlstFileInfo.count() <= 0)
                {
                    qDebug()<<QString("remove empty dir: %1.").arg(qstrSubFilePath);
                    qdrSubPath.rmdir(qstrSubFilePath);
                }
            }
        }

    }while(0);

    return bRet;
}

按钮点击槽函数:

void Widget::on_pbn_del_clicked()
{
    //选择文件目录
    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                    "",
                                                    QFileDialog::ShowDirsOnly
                                                    | QFileDialog::DontResolveSymlinks);
    qDebug()<<dir;
    bool isok=clearEmptyFolder(dir);
    if(isok)
        QMessageBox::information(this,"success","删除完成");
    else
        QMessageBox::information(this,"error","错误");
}

五、效果演示

完整效果如下:

到此这篇关于利用QDir实现删除选定文件目录下的空文件夹的文章就介绍到这了,更多相关QDir删除空文件夹内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt利用DOM类实现读取xml文件

    目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 node.xml 4.2 pro文件 4.3 main.cpp 五.效果演示 一.项目介绍 利用DOM相关类读取xml文件. Dom(Document Object Model,即文档对象模型)把XML文档转换成应用程序可以遍历的树形结构,这样便可以随机访问其中的节点.它的缺点是需要将整个XML文档读入内存,消耗内存较多. 在Qt中使用QDomProcessingInstruction类来表示XML说明,元素对应QD

  • C/C++ Qt 基本文件读写的基本使用(2种实现)

    目录 QT基本文件读写 QTextStream 实现流读写 文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能. Qt文件操作有两种方式,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写. 第一种,利用QFile中的相关函数,实现对文件的读写操作,QFile会调用IODevice设备,从而实现文件读写. QT基本文件读写 通

  • Qt实现解压带有密码的加密文件

    目录 1.指定zip压缩包状态 2.创建解压文件 3.获取实际的压缩数量 4.遍历方式创建解压缩文件 4.1设置解压文件的参数 4.2以读的方式打开加密文件 4.3获取当前文件的所有内容 4.4创建解压缩后的同名文件 5.关闭zip压缩包 上一章节中介绍了如何使用Qt编译quazip库以及对文件加解密的简单应用,那么,今天我们继续深挖关于解密操作的功能吧! 简单的解密一个压缩包,可以使用#include "JlCompress.h"中的函数进行静态操作.如果你只是需要简单的应用那么,这

  • Qt QFtp客户端实现上传下载文件

    目录 1.简介 2.用到的主要类 2.1QNetworkReply 2.2QNetworkRequest 3.示例 3.1本地搭建一个FTP服务器. 3.2示例 1.简介 实现FTP客户端有几种方式. Qt4 QFtp类 Qt5 QNetworkAccessManager类 QNetworkAccessManager支持大多数的网络协议,比如http.ftp等,这里主要讲解QNetworkAccessManager实现的FTP客户端. 需要添加 Qt += network 模块. 2.用到的主要

  • 利用QDir实现删除选定文件目录下的空文件夹

    目录 一.项目介绍 二.项目基本配置 三.UI界面设置 四.主程序实现 4.1 widget.h头文件 4.2 widget.cpp源文件 五.效果演示 一.项目介绍 本文介绍利用QDir删除选定文件目录下的所有空文件夹. 二.项目基本配置 新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建. 三.UI界面设置 UI界面如下: 序号 名称 类型 属性 ① pbn_del QPushButton text:请选择要删除的目录 四.主

  • java删除指定目录下所有空文件夹的方法

    本文实例讲述了java删除指定目录下所有空文件夹的方法.分享给大家供大家参考,具体如下: package com.func; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 删除指定目录下的所有空文件夹 * * @author zdw * */ public class FileUtils { List<File> list = new ArrayList<File>();

  • php删除一个路径下的所有文件夹和文件的方法

    php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用. 也适合在thinkphp中清理缓存,在thinkphp中可以把下面代码写入./Application/Admin/Common/function.php文件中,再在控制器调用这个函数进行清理操作. 用到的函数: scandir($path)    遍历一个文件夹所有文件并返回数组.     unlink($filename)    删除文件.     r

  • Linux中利用c语言删除某个目录下的文件

    利用c语言删除目录下文件 最近这段时间工作内容是关于Linux下的简单文件操作,以前对于Linux系统下的文件操作函数都不是太熟悉,经过这次实践,对这些函数使用有了一定的了解 如何创建文件,读写文件,这些简单的我想大家应该是比较熟悉的,我所介绍的是如何遍历某个目录,并且删除该目录下的文件(可以指定后缀名),并且也可以指定 文件的修改时间范围(多少小时以前的旧文件可以删除),下面就是简单的函数实现,仅供初学者参考(毕竟我也是初学者\(^o^)/~) #include <stdio.h> #inc

  • java删除指定目录下指定格式文件的方法

    本文实例为大家分享了java删除指定目录下指定格式文件的具体代码,供大家参考,具体内容如下 正在看疯狂java讲义这本书,发现源码中有我不需要的class文件,想批量把它删除 代码如下: import java.io.File; public class Main { static int count = 0; public static void main(String[] args) { //路径 String path="/media/lcy/Data/Workspaces/java/cr

  • Python遍历某目录下的所有文件夹与文件路径

    本文与<[Java]读取其下所有文件夹与文件的路径>(点击打开链接)为姊妹篇,主要讲述Python对于文件信息的读取操作. Python对于文件信息的读取操作,在其固有类os中. 下面以读取F盘下的所有文件夹作为例子说明这个问题: Python对于文件夹的遍历有两种写法,一种是直接利用其封装好的walk方法直接操作. 这是Python做得比Java优势的地方: # -*-coding:utf-8-*- import os for root,dirs,files in os.walk("

  • asp.net遍历文件夹下所有子文件夹并绑定到gridview上的方法

    遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上 Helper app_Helper = new Helper(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { gvwBind(); } #region 绑定GridView /// <summary> //

  • 用vbs实现删除名称中有撇号的文件夹

    问: 您好,脚本专家!如何删除名称中有撇号的文件夹? -- JH 答: 您好,JH.噢,是的,撇号:每个脚本编写者的主要灾难来源.撇号看起来只是一个简单的小字符,但切莫让它的外表所迷惑:撇号(或单引号)可能是键盘上最致命的字符.无论您是使用 Active Directory.数据库,还是文件系统,一个撇号就可以给您的脚本带来全部灾难.正如 Bart Simpson 曾经形容 Hershey? 的 Milk Dud 糖果,撇号也是"甜外毒内". 注意:不,Milk Dud 里面并非真的有

  • Shell脚本实现递归删除空文件夹

    有时我们需要递归删除空文件夹,网上找了一下,没有发现比较好的Shell脚本,于是自己动手写了一个 脚本 复制代码 代码如下: #!/bin/bash # author: 十年后的卢哥哥 # des: delete empty directories recursive deleteempty() {   find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir   do     if [[ -z "$(find "

  • Android 开发中layout下的子文件夹

    如果一个项目内有很多个界面,那么在layout下会有太多的activity***.xml文件,这个时候就需要使用文件夹对这些分别存放了. 当然你可以直接在这里新建文件夹,虽然你可以建立好,实际上这不能直接使用,IDE会报错. 最好的方式是你在项目之初,就规划好项目中有多少个模块,以模块为分界. 然后在 app/build.gradle 文件的 android{} 内添加如下代码,点击 sync now 后IDE 会更新加载一次.也许你还需要重新启动一下IDE. sourceSets { main

随机推荐