#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; }