C++ QDirIterator:读取目录和子目录
我在递归读取文件时遇到一些问题。看一看:C++ QDirIterator:读取目录和子目录,c++,qt,C++,Qt,我在递归读取文件时遇到一些问题。看一看: QDir absoPath; QString directory = QFileDialog::getExistingDirectory(); QDirIterator it(directory, QDirIterator::Subdirectories); while(it.hasNext()){ absoPath = it.next(); QFile totalFiles(absoPath.absolutePath() + "\\
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();
QDir路径;
QString目录=QFileDialog::getExistingDirectory();
QDirIterator-it(目录,QDirIterator::子目录);
while(it.hasNext()){
absoPath=it.next();
QFile totalFiles(absolutePath.absolutePath()+“\\Total\u imagens.txt”);
totalFiles.open(QIODevice::ReadOnly | QIODevice::Text);
if(totalFiles.isOpen()){
QTextStream(总文件(&totalFiles));
而(!in.atEnd()){
qDebug()我想,迭代器会遍历。还有..。这意味着每个文件都要读取3次。
尝试使用构造函数,其中可以传递值为QDir::NoDotAndDotDot的dir过滤器
试着改变
QDirIterator it(directory, QDirIterator::Subdirectories);
借
明白了
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路径;
QString目录=QFileDialog::getExistingDirectory();
QDirIterator it(目录,QDir::AllEntries | QDir::NoDotAndDotDot,QDirIterator::子目录);
absoPath=it.path();
while(it.hasNext()){
QFile totalFiles(绝对路径+“\\Total\u images.txt”);
totalFiles.open(QIODevice::ReadOnly | QIODevice::Text);
if(totalFiles.isOpen()){
QTextStream(总文件(&totalFiles));
而(!in.atEnd()){
qDebug()忘了提到,每个.txt文件都有不同的内容。奇怪的是,迭代器将“.hasNext”设置为false并返回。不读取任何内容。尝试使用QDir::AllEntries | QDir::NoDotAndDotDot
作为过滤器。
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;
}