Gewusst wie: Lesen aus einer Textdatei mit fester Breite in Visual Basic

Aktualisiert: November 2007

Mit dem TextFieldParser-Objekt können strukturierte Textdateien, z. B. Protokolle, leicht und effizient analysiert werden.

Die TextFieldType-Eigenschaft definiert, ob es sich um eine Datei mit Trennzeichen oder um eine Datei mit Textfeldern fester Breite handelt. Um ein Feld variabler Breite in einer Datei mit fester Breite anzugeben, definieren Sie die Feldbreite als -1.

So analysieren Sie eine Textdatei mit fester Breite

  1. Erstellen Sie einen neuen TextFieldParser. Im folgenden Code wird ein TextFieldParser mit dem Namen Reader erstellt und die Datei test.log geöffnet.

    Using Reader As New _
    Microsoft.VisualBasic.FileIO.TextFieldParser _
    ("C:\TestFolder\test.log")
    
  2. Definieren Sie die TextFieldType-Eigenschaft als FixedWidth, und geben Sie die Breite und das Format an. Im Beispiel werden die Textspalten wie folgt definiert: die erste Spalte ist 5 Zeichen breit, die zweite 10, die dritte 11 und die vierte Spalte weist eine variable Breite auf.

    Reader.TextFieldType = _
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Die Felder in der Datei werden durchlaufen. Falls eine beschädigte Zeile gefunden wird, wird ein Fehler gemeldet und die Analyse fortgesetzt.

    Dim currentRow As String()
       While Not Reader.EndOfData
          Try
             currentRow = Reader.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. Der While-Block und der Using-Block werden mit End While und End Using geschlossen.

       End While
    End Using
    

Beispiel

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

Using Reader As New _
Microsoft.VisualBasic.FileIO.TextFieldParser("C:\TestFolder\test.log")
   Reader.TextFieldType = _
   Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
   Reader.SetFieldWidths(5, 10, 11, -1)
   Dim currentRow As String()
   While Not Reader.EndOfData
      Try
         currentRow = Reader.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

Robuste Programmierung

Unter den folgenden Umständen können Ausnahmen auftreten:

Siehe auch

Aufgaben

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

Gewusst wie: Lesen aus Textdateien mit mehreren Formaten in Visual Basic

Exemplarische Vorgehensweise: Bearbeiten von Dateien und Verzeichnissen in Visual Basic

Problembehandlung: Lesen aus und Schreiben in Textdateien

Problembehandlung bei Ausnahmen: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Konzepte

Analysieren von Textdateien mit dem TextFieldParser-Objekt

Referenz

TextFieldParser-Objekt