Qt搜索目录下的所有文件中指定的字符串

 

#include <QDir>
#include <QFile>
bool search(const QString &folderDir, const QString& text)
{
    QDir dir(folderDir);
    QFileInfoList fileList;
    QFileInfo curFile;
    if (!dir.exists()) { return false; }//文件不存,则返回false
    fileList = dir.entryInfoList(QDir::Dirs | QDir::Files
        | QDir::Readable | QDir::Writable
        | QDir::Hidden | QDir::NoDotAndDotDot
        , QDir::Name);

    int infoNum = fileList.size();
    for (int i = infoNum - 1; i >= 0; i--)
    {
        curFile = fileList[i];
        if (curFile.isFile())//如果是文件,删除文件
        {
            QFile file(curFile.filePath());
            if (file.open(QIODevice::ReadOnly))
            {
                QString str = file.readAll();
                if (str.contains(text))
                {
                    qDebug() << curFile.filePath();
                }
            }
        }
        if (curFile.isDir())//如果是文件夹
        {
            QDir dirTemp(curFile.filePath());
            QFileInfoList fileList1 = dirTemp.entryInfoList(QDir::Dirs | QDir::Files
                | QDir::Readable | QDir::Writable
                | QDir::Hidden | QDir::NoDotAndDotDot
                , QDir::Name);
            if (fileList1.size() == 0)//下层没有文件或文件夹
            {
                dirTemp.rmdir(".");
                fileList.removeAt(i);
            }
            else//下层有文件夹或文件
            {
                for (int j = 0; j<fileList1.size(); j++)
                {
                    if (!(fileList.contains(fileList1[j])))
                        fileList.append(fileList1[j]);
                }
            }
        }
    }
    return true;
}

 

posted @ 2022-01-06 21:21  远方是什么样子  阅读(337)  评论(0编辑  收藏  举报