簡體   English   中英

QT 如何使用 QDirIterator 訪問子目錄中的特定目錄?

[英]QT How to access specific directory within subdirectories with a 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

我有三個月的數據要處理,我需要訪問 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;

如何遍歷目錄但只獲取 Target 文件夾中的文件?

可能會嘗試如下所述。 這是粗略的代碼,可能需要更多的驗證。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM