QDirIterator:读取目录和子目录

时间:2017-02-01 13:33:22

标签: c++ qt

我在递归地读取文件时遇到了一些麻烦。看看:

QDir absoPath;
QString directory = QFileDialog::getExistingDirectory();

QDirIterator it(directory, QDirIterator::Subdirectories);
while(it.hasNext()){
    absoPath = it.next();

    QFile totalFiles(absoPath.absolutePath() + "\\Total_imagens.txt");
    totalFiles.open(QIODevice::ReadOnly | QIODevice::Text);
    if(totalFiles.isOpen()){
        QTextStream in(&totalFiles);
        while(!in.atEnd()){
        qDebug() << in.readLine();

我的目标是读取.txt文件并计算其中的行数。在每个子目录中,应该具有相同名称的.txt文件。问题是迭代器多次读取相同的.txt文件。

我能做什么吗?更改.txt文件的名称是我想要的最后一件事。

感谢您的耐心和帮助!

2 个答案:

答案 0 :(得分:0)

我猜,迭代器会通过。并且。这意味着每个文件被读取3次。 尝试使用构造函数,您可以在其中传递值为QDir :: NoDotAndDotDot

的dir-filter

尝试更改

QDirIterator it(directory, QDirIterator::Subdirectories);

通过

QDirIterator it(directory, QDir::NoDotAndDotDot, QDirIterator::Subdirectories);

答案 1 :(得分:0)

知道了!

QString absoPath;
    QString directory = QFileDialog::getExistingDirectory();

QDirIterator it(directory,QDir::AllEntries |QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
absoPath = it.path();
while(it.hasNext()){

    QFile totalFiles(absoPath + "\\Total_imagens.txt");
    totalFiles.open(QIODevice::ReadOnly | QIODevice::Text);
    if(totalFiles.isOpen()){
        QTextStream in(&totalFiles);
        while(!in.atEnd()){
        qDebug() << in.readLine();
        totalFiles.close();

    }
}
    absoPath = it.next();
}
qDebug() << "Over";
return;
}

我唯一需要做的就是获得一个QString来接收&#34; it.next()&#34;在末尾。谢谢你的帮助......旗帜帮了很多忙!