ich habe mir ein Programm gebastelt, um aus vielen Textdateien jeweils die doppelten Zeilen zu löschen und die Zeilen dann noch sortiert werden.
Das Problem ist, dass die Ausführung relativ lange dauert. Es handelt sich um bis zu etwa 150-200 einzelne Dateien, jeweils so ca. 150kb groß.
Meine Frage zu dem bestehenden Code ist, ob es eine Möglichkeit gibt, die Ausführung zu beschleunigen, also den Code effizienter gestalten kann. Wenn ja, wäre ich dankbar für Tips.
Im Folgenden mein Code:
Code: Alles auswählen
QString WorkFolder = "C:/workfolder/";
QStringList FileContent;
bool line_exists=false;
QDirIterator it_doppel(WorkFolder, QStringList() << "*.txt", QDir::Files, QDirIterator::Subdirectories);
while (it_doppel.hasNext()) {
FileList << it_doppel.next();
}
for(int i = 0; i < FileList.size(); i++){
QFile filein(FileList[i]);
if (!filein.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!filein.atEnd()) {
QByteArray line = filein.readLine();
QString str_line = line;
for(int x = 0; x < FileContent.size(); ++x){
if(FileContent[x] == str_line){
line_exists=true;
break;
}
}
if(line_exists == false){
FileContent << str_line;
}
line_exists=false;
}
QFile fileout(FileList[i]);
if (!fileout.open(QIODevice::WriteOnly | QIODevice::Text))
return;
FileContent.sort();
QTextStream out(&fileout);
for(int y = 0; y < FileContent.size(); ++y){
out << FileContent[y];
}
FileContent.clear();
}