繁体   English   中英

QDirIterator:读取目录和子目录

[英]QDirIterator: Reading directories and subdirectories

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

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 文件的名称是我最不想做的事情。

感谢您的耐心和帮助!

知道了!

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 来接收“it.next()”。 感谢您的帮助...标志帮助很大!

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

尝试改变

QDirIterator it(directory, QDirIterator::Subdirectories);

经过

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM