我有成千上万个文件要经过这样的目录结构:
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
我有三个月的数据需要处理,我需要进入Target文件夹,并且仅进入Target文件夹。它们包含我们需要查看的文件,而其他一些文件夹也包含我们不需要查看的.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;
我如何遍历目录,而仅获取目标文件夹中的文件?
答案 0 :(得分:0)
请尝试如下所述。这是粗糙的代码,可能需要更多验证。
//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());
}
}