QT 递归获取指定路径下所有文件及其文件夹 源码分享

前言

本章代码提供三个功能点
1.查找当前路径下的文件
2.查找当前路径下的子目录
3.递归查找当前路径下所有文件

功能展示

1.查找当前路径下的文件在这里插入图片描述
2.查找当前路径下的子目录
在这里插入图片描述

3.递归查找当前路径下所有文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/463303ffa8524466bf6b5ca9ed17f484.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAamJ5eXnjgIE=,size_20,color_FFFFFF,t_70,g_se,x_1

源码分享

Github源码下载地址:https://github.com/jbyyy/searchLocalFile

1.查找当前路径下的文件

QStringList MainWindow::findFile(QString path)
{
    // 获取所有文件夹名
    QDir dir(path);
    path = dir.fromNativeSeparators(path);//  "\\"转为"/"
    QStringList allFile = QStringList("");
    dir.setFilter(QDir::Files);
    dir.setSorting(QDir::Name);
    allFile = dir.entryList();
    return  allFile;
}

1.1调用方法

//查找当前路径下的文件
void MainWindow::on_pushButton_findFile_clicked()
{
    QString FileFolder = QFileDialog::getExistingDirectory( this, "choose Directory",  "/");
    if(!FileFolder.isEmpty())
    {
        QStringList files = findFile(FileFolder);
        for(int i=0; i<files.size(); i++)
            ui->textEdit->append(QString("文件名:%1").arg(files.at(i)));
    }
}

2.查找当前路径下的子目录

QStringList MainWindow::findFolder(QString folder)
{
    // 获取所有文件夹名
    QDir dir(folder);
    folder = dir.fromNativeSeparators(folder);//  "\\"转为"/"
    QStringList allFolder = QStringList("");
    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
    dir.setSorting(QDir::Name);
    allFolder = dir.entryList();
    return  allFolder;
}

2.1调用方法

//查找当前路径下的子目录
void MainWindow::on_pushButton_fileDir_clicked()
{
    QString FileFolder = QFileDialog::getExistingDirectory( this, "choose Directory",  "/");
    if(!FileFolder.isEmpty())
    {
        QStringList folders = findFolder(FileFolder);
        for(int i=0; i<folders.size(); i++)
            ui->textEdit->append(QString("子目录:%1").arg(folders.at(i)));
    }
}

3.递归查找当前路径下所有文件

void MainWindow::findAllFiles(QString folder)
{
    //添加当前路径下所有的文件
    QStringList Files =findFile(folder);
    for(int i=0; i<Files.size(); i++)
    {
        FolderPath.append(QPair<QString,QString>(folder,Files.at(i)));
    }
    // 获取所有文件夹名
    QStringList Folder = findFolder(folder);        //根目录下的子文件夹
    //遍历子文件夹 获取里面的文件和文件夹
    for (int i = 0; i < Folder.size(); ++i)
    {
        findAllFiles(folder+"/"+Folder[i]);
    }
}

3.1调用方法

//递归查找当前路径下所有文件
void MainWindow::on_pushButton_findAllFiles_clicked()
{
    FolderPath.clear();
    QString FileFolder = QFileDialog::getExistingDirectory( this, "choose Directory",  "/");
    if(!FileFolder.isEmpty())
        findAllFiles(FileFolder);
    for(int i=0; i<FolderPath.size(); i++)
    {
        ui->textEdit->append(QString("文件名:%1\n文件路径:%2\n").arg(FolderPath.at(i).second).arg(FolderPath.at(i).first));
    }
}
  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jbyyy、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值