QT递归遍历文件夹下所有文件,获取单个文件行数

该代码示例展示了在QT中如何使用递归函数`GetAllfilesFromDir`遍历指定文件夹及其子文件夹中的所有文件,并将文件信息存储在列表中。同时,还提供了一个`GetFileLine`函数用于计算单个文件的行数。这两个函数对于处理文件系统操作非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT递归遍历文件夹下所有文件

文件操作经常会用到获取文件夹下所有文件,包括所有子文件夹里的文件,这时可以用递归方法来便利所有文件夹,代码如下:


void MainWindow::GetAllfilesFromDir(QString p_str_dirname , QFileInfoList &m_fileinfolist)
{
    QDir t_dir(p_str_dirname);
    if(!t_dir.exists())
    {
         QMessageBox::information(this , "警告" ,"选择文件夹为空,请重新选择");
         return;
    }

    foreach(QFileInfo info , t_dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs))
    {
        GetAllfilesFromDir(info.filePath() , m_fileinfolist);
    }

    foreach(QFileInfo info , t_dir.entryInfoList(QDir::Files))
    {
        m_fileinfolist.push_back(info);
    }

    foreach(QFileInfo info , m_fileinfolist)
    {
        qDebug()<<"---"<<info.absoluteFilePath()<<"---"<<info<<endl;
    }
}

获取文件行数


int MainWindow::GetFileLine(QString p_str_filename)
{
    QFile mfile(p_str_filename);
    int m_count=0;
    if(mfile.open(QIODevice::ReadOnly))
    {
        while(true)
        {
            char buffer[2048]={0};
            int readsize = mfile.readLine(buffer , sizeof(buffer));
            if(readsize!=-1)
            {
                m_count++;
            }
            else
            {
                break;
            }
        }
    }
    return m_count;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值