easy70
Goto Top

Fehlerbehandlung beim Einlesen von Verzeichnisbäumen und Dateien

Folgendes Problem: ich möchte ganze Verzeichnisbäume einlesen, die Verzeichnisse auslassen, die beim
Einlesen Fehler verursachen (z.Bsp. wegen Zugriffsberechtigung), und dabei bestimmte Dateien (zur weiteren
Bearbeitung) in einer ListBox anzeigen.
Bei meiner Methode (s.u.) springt mir das Programm aber beim ersten Fehler aus der (Einlese-)Schleife und
überspringt die restlichen Verzeichnisse. Habe mich stundenlang vergoogelt, aber leider keine passende
Lösung gefunden. Hat hier vielleicht jemand eine rettende Idee?


Code:
  Dim TempStr As String'..................' aus Verzeichnis eingelesene Datei  
  Dim Counter As Integer = 0..................' allg. Zähler  
  Dim FileCounter As Integer = 0..................' Zähler für gefundene Dateien  
  Dim MaxFileAmount As Integer = 40                                .........' Max.Anzahl der zu vergl. Dateien  
  Dim CompareFile() As String = {"File1.txt", "File2.txt" (...) }  .........' Array mit den zu findenden Dateien  
  Dim SearchDir As String = "c:\"                                  .........' zu durchsuchendes Verzeichnis  
				
   Try
     For Each File As String In Directory.GetFiles(SearchDir, "*.*", SearchOption.AllDirectories)  
       TempStr = My.Computer.FileSystem.GetName(File)
       For Me.Counter = 1 To MaxFileAmount                         .........' Schleife für alle zu vergl. Dateien  
         If TempStr = CompareFile(Counter) Then                    .........' eingelesene Datei mit Array() vergl.  
           ListBox1.Items.Add(File)                                .........' passende Dateien in ListBox1 anzeigen  
           FileCounter = FileCounter + 1                           .........' Anzahl der passenden Dateien +1  
         End If
       Next
     Next
            
   Catch ex As Exception                                           .........' Falls Verzeichnis nicht lesbar....  
       ListBox2.Items.Add(ex.Message)                              .........' Fehlermeldungen in ListBox2 anzeigen  
   End Try
   infomsg = MessageBox.Show("Ready")                              .........' Programmlauf beendet  


[Edit Biber]Codeformatierung. [/Edit]

Content-Key: 192118

Url: https://administrator.de/contentid/192118

Printed on: April 19, 2024 at 20:04 o'clock

Member: dog
dog Oct 02, 2012 at 22:45:09 (UTC)
Goto Top
Bei meiner Methode (s.u.) springt mir das Programm aber beim ersten Fehler aus der (Einlese-)Schleife und
überspringt die restlichen Verzeichnisse.

Ja, weil dein Try/Catch um deine For-Schleife drum herum ist!

Du musst das Try schon in die For-Schleife packen, wenn du die Fehler ignorieren willst.