我在递归地读取文件时遇到了一些麻烦。看看:
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文件的名称是我想要的最后一件事。
感谢您的耐心和帮助!
答案 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;在末尾。谢谢你的帮助......旗帜帮了很多忙!