QT 如何使用 QDirIterator 访问子目录中的特定目录

QT How to access specific directory within subdirectories with a QDirIterator?

本文关键字:子目录 何使用 QDirIterator 访问 QT      更新时间:2023-10-16

>我有数千个文件要处理这样的目录结构:

YYYY_MM_DD
    XXX
    XXX
    XXX
    Target
        .hdr files
    XXX
    XXX
        more .hdr files but do not want to process
YYYY_MM_DD
    XXX
    XXX
    XXX
    Target
        .hdr files
    XXX
    XXX
         more .hdr files but do not want to process

我有三个月的数据要处理,我需要访问目标文件夹,并且只需要目标文件夹。它们包含我们需要查看的文件,其他一些文件夹也有我们不需要查看的 .hdr 文件。

起初,我使用了如下QDirIterator

QDirIterator it(inputDir, QStringList() << "*.hdr", QDir::Files, QDirIterator::Subdirectories);

但是,在运行我的程序时,我意识到这也会抓取其他.hdr文件,我不需要处理这些文件。这是我编写的代码,可以找到所有.hdr文件:

QDirIterator it(inputDir, QStringList() << "*.hdr", QDir::Files, QDirIterator::Subdirectories);
std::vector<std::string> files;
while(it.hasNext())
{   
    files.push_back(it.next().toStdString());
}
return files;

如何遍历目录但只获取目标文件夹中的文件?

可能尝试

如下所述。这是粗略的代码,可能需要更多验证。

//FILTER THE SPECIFIC TARGET DIRECTORY.
QStringList filterFolder = {"TARGETFOLDERNAME"};
QDir directory("BASE DIRECTORY OF SEARCH");
QFileInfoList foldersTobeIterated = directory.entryInfoList(filterFolder);
//ITERATE THE FILTERED DIRECTORIES.
std::vector<std::string> files;
for(auto folder : foldersTobeIterated)
{
    QDirIterator it(folder.absoluteFilePath(), QStringList() <<"*.txt", QDir::Files,QDirIterator::Subdirectories);
    while(it.hasNext())
    {
        files.push_back(it.next().toStdString());
    }
}