Qt递归搜索当前文件夹下所有含有目标文件的文件夹
时间: 2023-07-28 07:06:42 浏览: 149
你可以使用QDir类的entryList函数来获取当前文件夹下的所有子目录和文件,然后递归地搜索子目录。检查每个文件是否包含目标文件可以使用QFile类的exists函数和QRegularExpression类的match函数。
下面是一个示例代码:
```cpp
void searchFolder(const QString& targetFileName, const QString& currentFolder)
{
QDir folder(currentFolder);
QStringList entries = folder.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
for (const QString& entry : entries) {
QString path = currentFolder + "/" + entry;
if (QFileInfo(path).isDir()) {
// Recursively search subfolders
searchFolder(targetFileName, path);
} else {
// Check if file contains target file
if (QFile::exists(path)) {
QFile file(path);
if (file.open(QIODevice::ReadOnly)) {
QTextStream stream(&file);
QString content = stream.readAll();
QRegularExpression regex(targetFileName);
if (regex.match(content).hasMatch()) {
qDebug() << "Found target file in " << path;
}
file.close();
}
}
}
}
}
```
你可以使用以下方式来调用这个函数:
```cpp
searchFolder("target_file.txt", QDir::currentPath());
```
这将搜索当前工作目录下所有包含目标文件的文件夹。
阅读全文