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());
}
}