Seite 1 von 1

best way zur Dateisuche

Verfasst: 2. Januar 2012 16:55
von JohnR
Hi

Aktuell schreibe ich ein Programm welches einen Datenträger/Pfad/Ordner durchsuchen soll und dabei alle Bilddateien finden soll.

Das funktioniert auch schon ganz gut, hier Auszugsweise mein Ansatz.

Code: Alles auswählen

void PicSearch::getfile(QModelIndex pathdata)
{
    listWidget_2->setAutoScroll(true);
    QString path;
    path = model->filePath(pathdata);
    int i = 0;
    //int tv3= 1;
    QStringList filters,testlist,matchlist;
    filters << "*.jpg";
    QDirIterator it(path, QDirIterator::Subdirectories);
     while (it.hasNext()) {
     //    qDebug() << it.next();
         it.next();
         ++i;
         testlist.append(it.fileName());
         textBrowser->setText(tr("Discovering Filesystem\r\n%1 Files processed\r\n")
                              .arg(i));
         qApp->processEvents();

     }

     int j = testlist.size();
     int k = 0;
     int l = 0;
     //qDebug() << j;

     while (k<j)
     {
         if (testlist[k].contains(".jpg"))
         {
             matchlist.append(testlist[k]);
             listWidget_2->insertItem(i,matchlist[l]);
             ++i;
             ++l;
             qApp->processEvents();
         }
         ++k;
Die Selektion der Pfade/Ordner findet über eine QTreeview statt.

Meine Frage ist, ist das der potenteste Weg oder kann man das ganze noch beschleunigen ?

Mir ist vollkommen klar das das durchsuchen des Filesystems Zeit braucht, darum geht es hier auch nicht, meine Intention ist eher das ich den schnellsten Weg nutzen möchte ;-)

Wäre nett wenn da jemand noch ein paar tipps für mich als neuling hätte, bisher habe ich daran gedacht das ganze auf verschiedene threads aufzusplitten, die Frage ist aber wie, denkbar wäre sicher -> Ordner a hat 10 Unterordnner -> Thread 1 übernimmt 1-5, Thread 2 dann 6-10......



// edit

o.k. die "Sortierroutine" kann ich mir schonmal sparen, wenn ich die Dateien filtere, siehe

http://www.developer.nokia.com/Communit ... ry_content

bleibt noch die Frage ob man es durch aufteilung in threads merklich beschleunigen könnte, oder falls jemand eine gänzlich andere Lösung einfällt bin ich da auch ganz Ohr bzw. Auge

und in diesem Zusammenhang ......

was ist KFilterSuffix ??

Code: Alles auswählen

if(dirIterator.fileInfo().completeSuffix().contains(KFilterSuffix,Qt::CaseInsensitive))
		{
			list.append(dirIterator.fileInfo().absoluteFilePath());
		}
completeSuffix ist meinen Qt geläufig, aber KFilterSuffix aus oben genannten Link vom developer-nokia will es nicht akzeptieren :cry:

auch Freund google sagt dazu mal erstaunlicherweise so gut wie gar nix......

Re: best way zur Dateisuche

Verfasst: 2. Januar 2012 18:59
von Christian81
KFilterSuffix ist eine Variable und wenn Du sie nicht definierts wird es wohl nicht compilieren...
Threads helfen nicht wirklich da Deine Platte meist wesentlich langsamer ist als deine CPU.

Re: best way zur Dateisuche

Verfasst: 2. Januar 2012 21:09
von JohnR
Danke Christian, das mit der Variable war mir zwischenzeitlich auch schon aufgefallen, stand wohl etwas auf dem Schlauch :mrgreen:

Das die Platte der Flaschenhals ist habe ich mir schon fast gedacht.....

Gruß John