Gewusst wie: Lesen aus durch Kommas getrennten Textdateien in Visual Basic

Das TextFieldParser-Objekt bietet eine Möglichkeit, strukturierte Textdateien wie Protokolle einfach und effizient zu analysieren. Die TextFieldType-Eigenschaft definiert, ob es sich um eine Datei mit Trennzeichen oder mit Textfeldern fester Breite handelt.

Analysieren einer durch Trennzeichen getrennten Textdatei

  1. Erstellen Sie einen neuen TextFieldParser. Der folgende Code erstellt den TextFieldParser namens MyReader und öffnet die Datei test.txt.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Definieren Sie den TextField-Typ und das Trennzeichen. Der folgende Code definiert die TextFieldType-Eigenschaft als Delimited und das Trennzeichen als „,“.

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Durchlaufen Sie die Felder in der Datei. Wenn Zeilen fehlerhaft sind, einen Fehler melden und die Analyse fortsetzen. Der folgende Code durchläuft die Datei, zeigt der Reihe nach jedes Feld an und meldet alle Felder, die nicht korrekt formatiert sind.

    
    Dim currentRow As String()
       While Not MyReader.EndOfData
          Try
             currentRow = MyReader.ReadFields()
             Dim currentField As String
             For Each currentField In currentRow
                MsgBox(currentField)
             Next
             Catch ex As Microsoft.VisualBasic.
                         FileIO.MalformedLineException
               MsgBox("Line " & ex.Message &
               "is not valid and will be skipped.")
         End Try
    
  4. Schließen Sie die Blöcke While und Using mit End While und End Using.

       End While
    End Using
    

Beispiel

In diesem Beispiel wird aus der Datei test.txt gelesen.

  Using MyReader As New Microsoft.VisualBasic.
                        FileIO.TextFieldParser(
                          "C:\TestFolder\test.txt")
   MyReader.TextFieldType = FileIO.FieldType.Delimited
   MyReader.SetDelimiters(",")
   Dim currentRow As String()
   While Not MyReader.EndOfData
      Try
         currentRow = MyReader.ReadFields()
         Dim currentField As String
         For Each currentField In currentRow
            MsgBox(currentField)
         Next
      Catch ex As Microsoft.VisualBasic.
                  FileIO.MalformedLineException
        MsgBox("Line " & ex.Message &
        "is not valid and will be skipped.")
      End Try
   End While
End Using

Stabile Programmierung

Die folgenden Bedingungen können einen Ausnahmefehler verursachen:

  • Eine Zeile kann nicht mit dem angegebenen Format analysiert werden (MalformedLineException). Die Ausnahmemeldung gibt die Zeile an, die die Ausnahme verursacht, während der in der Zeile enthaltene Text der ErrorLine-Eigenschaft zugewiesen wird.

  • Die angegebene Datei ist nicht vorhanden (FileNotFoundException).

  • Eine teilweise vertrauenswürdige Situation, in der der Benutzer nicht über ausreichende Berechtigungen für den Dateizugriff verfügt. (SecurityException).

  • Der Pfad ist zu lang (PathTooLongException).

  • Der Benutzer hat keine ausreichende Berechtigungen für den Dateizugriff (UnauthorizedAccessException).

Siehe auch

Microsoft.VisualBasic.FileIO.TextFieldParser
Gewusst wie: Lesen aus einer Textdatei mit fester Breite
Gewusst wie: Lesen aus Textdateien mit mehreren Formaten
Analysieren von Textdateien mit dem TextFieldParser-Objekt
Exemplarische Vorgehensweise: Bearbeiten von Dateien und Verzeichnissen in Visual Basic
Problembehandlung: Lesen aus und Schreiben in Textdateien