Algorithmus um alle Verzeichnisse nach Dateien zu durchsuchen



  • Hallo,

    ich benötige für ein archivierungsprogramm einen algorithmus um alle verzeichnisse (z.b. von "C:\") nach allen dateien zu durchsuchen. (ähnlich wie bei ner virenprüfung) ich habe schon versuche gestartet aber ich bekomme einfach das mit den schleifen nicht hin. zusätzlich muss ich aber jede gerade gefundene datei abfragen können (also z.b in ner statusleiste anzeigen welche datei gerade gefunden wurde)

    mit

    Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories);
    

    klappt es zwar anfangs, aber bei verzeichnissen, wo der zugriff gesperrt ist (z.b. System Volume Information), wird eine exception geworfen und die funktion is beendet ohne alles zu durchsuchen.

    ich hoffe jemand kann mir helfen, danke schonmal vorweg



  • Versuch's mal so:

    DirectoryInfo src = ...
    
    foreach (FileInfo fi in src.GetFiles() )
    {
         ...
    }
    

    Guten Rutsch!



  • die funktion ist so ähnlich wie meine genannte, aber sie wirft auch ne exception bei geschützten verzeichnissen 😞 😉

    was ich brauche ist die implementierung der funktion (oder so ähnlich), damit ich im falle einer exception selber entscheiden kann was passiert (nämlich das verzeichnis ignorieren ^^)



  • Dauercoder schrieb:

    was ich brauche ist die implementierung der funktion (oder so ähnlich), damit ich im falle einer exception selber entscheiden kann was passiert (nämlich das verzeichnis ignorieren ^^)

    Implementiert werden müßte also eine SecurityException-Class ...? Die Arbeit haben die Microsofties übernommen. Beschreibung mit ausführlichem Beispiel findest Du hier: http://msdn2.microsoft.com/en-us/library/system.security.securityexception.aspx



  • warscheinlich hab ich mein problem etwas falsch beschrieben:

    was ich brauche ist nur: wie kann man schleifen so verbinden, sodass alle verzeichnisse eines laufwerks durchsucht werden können?

    bsp:

    string[] rootdir = Directory.GetDirectories("C:\\");
    
    foreach(string dir in rootdir)
    {
        string[] subdirs1 = Directory.GetDirectories(dir);
    
        foreach(string dir in subdirs1)
        {
            ...
    

    ich kann jedoch nicht tausende schleifen schreiben, sondern es muss ja eine möglichkeit geben es mit ein paar schleifen hinzubekommen... das ist mein problem! Ich hoffe du (oder jemand anders) kann mir nen link oder ein beispiel für sowas posten.



  • Rekursion oder Queue



  • hmm... kannst du mir vielleicht auch noch kurz erklären wie man das anwendet? (kleines beispiel vielleicht)



  • Dauercoder schrieb:

    hmm... kannst du mir vielleicht auch noch kurz erklären wie man das anwendet? (kleines beispiel vielleicht)

    Rekursion: Die Funktion, die ein Verzeichnis durchsucht, ruft sich für jedes gefundene Unterverzeichnis selbst auf.

    Queue: Alle zu bearbeitenden Verzeichnisse (zu Beginn nur eines) stehen in einer Queue. In einer Schleife bearbeitest du jeweils den nächsten Eintrag. Findest du weitere Unterverzeichnisse, hängst du die hinten an die Queue.



  • ok ich habs hinbekommen, danke an alle 👍


Anmelden zum Antworten