2017-02-01 1 views
-1

파일을 재귀 적으로 읽는 데 문제가 있습니다. 보십시오 :QDirIterator : 디렉토리 및 하위 디렉토리 읽기

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

각 .txt 파일에는 내용이 다릅니다. – GDias

답변

0

나는 iterator가 throu가된다고 생각한다. 그리고 또한. 즉, 각 파일을 3 번 읽습니다. 알았어요

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

이상하게도, 이터레이터는 ".hasNext"를 false로 설정하고 반환합니다. 아무것도 읽지 않습니다. – GDias

+0

'QDir :: AllEntries | QDir :: NoDotAndDotDot'를 필터로 사용하십시오. –

+0

여전히 똑같은 ... – GDias

0

에 의해

QDirIterator it(directory, QDirIterator::Subdirectories); 

변경하려고하면 값 QDir :: NoDotAndDotDot

으로 DIR-필터를 통과 할 수 생성자를 사용해보십시오!

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; 
} 

마지막으로 "it.next()"를 받기 위해 QString을 얻는 것이 유일한 방법입니다. 도움을 주셔서 감사합니다 ... 깃발이 많이 도움이되었습니다!