Grundsätliche Ordner Frage

2fast4you87

Erfahrenes Mitglied
Hallo,

ich habe ein Programm geschrieben was alle Ordner und Dateien auf den PC einliest und auf einem MYSQL Server speichert, jetzt stellt sich aber die Frage ob ich das Merken der Ordner anders lösen kann.

Problem :
Laufwerk C:\
Alle Dateien einlesen und dann in den 1. Unterordner springen dort die Ordner merken und dann dort weiter lesen so lange bis er fertig ist dann wieder nach C:\ und den nächsten Unterordner durchsuchen.

mögliche Lösung :
Ich habe alle Ordner auf den MYSQL gespeichert, und ein Feld zusätzlich was eine 0 oder eine 1 hat (0 = wurde noch nicht gelesen und eine 1 = wurde schon gelesen).

Nur der MYSQL wird dadurch nicht grade geschont wenn ich immer fragen muss :
SELECT * FROM bla .... LIMIT 0,1;

Wäre eine bessere möglichkeit die Ordner alle in einem Array zu speichern und wenn er alles durch gelesen hat ins Array gucken und dann in den nächsten Ordner zu springen?

Oder habt ihr noch einen anderen besseren, kürzeren Vorschlag ?

Gruß 2fast...
P.S programmiere mit V++ 6.0 .
 
Hi.

Solch eine rekursive Suche kann man meist relativ einfach lösen - nämlich mit Rekursion ;)

Das heißt man speichert die bereits durchsuchten Ordner gar nicht extra irgendwo ab (schon gar nicht in 'ner Datenbank), sondern hinterlegt die einfach auf dem Stack (den verwaltet ja das Programm selbst) und ruft die Funktion einfach nochmal auf. Wenn die Funktion einen Ordner vollständig durchsucht hat, wird einfach wieder eine Ebene höher gesprungen und weitergesucht.

Pseudocode:
Code:
void suche(char* dir) {
  /* Ordnerinhalt auslesen: */
  for (i = FirstDirEnty(dir); i < LastDirEntry(dir); i = NextDirEntry(i)) {
    if (isDirectory(i) {
      /* Unterordner durchsuchen => rekursiver Aufruf */
     suche (i->name);
   else if (i->name == "*.bat" ) { 
     print("gefunden: %s", i->name);
   }
}
Wenn du mal ein bißchen im Forum suchst (z.B. nach findfirstfile) findest du schon einige Beispiele.

Gruß
 
Zurück