QT Как получить доступ к определенному каталогу в подкаталогах с помощью QDirIterator?

У меня есть тысячи файлов с такой структурой каталогов:

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;

Как я могу пройти по каталогам, но только взять файлы в папке Target?

1 ответ

Вероятно, попробуйте, как сказано ниже. Это грубый код, может потребоваться еще несколько проверок.

//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());
    }
}
Другие вопросы по тегам