Gewusst wie: Lesen aus einer Textdatei mit fester Breite 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 bei der analysierten Datei um eine Datei mit Trennzeichen oder mit Textfeldern fester Breite handelt. In einer Textdatei mit fester Breite kann das Feld am Ende über eine variable Breite verfügen. Um anzugeben, dass das Feld am Ende eine variable Breite besitzt, definieren Sie seine Breite kleiner als oder gleich 0 (null).

So analysieren Sie Textdatei mit fester Breite

  1. Erstellen Sie ein neues TextFieldParser-Element. Der folgende Code erstellt den TextFieldParser namens Reader und öffnet die Datei test.log.

    Using Reader As New Microsoft.VisualBasic.
        FileIO.TextFieldParser("C:\TestFolder\test.log")
    
  2. Definieren Sie die TextFieldType-Eigenschaft als FixedWidth, indem Sie die Breite und das Format definieren. Der folgende Code definiert die Textspalten. Die erste ist 5 Zeichen breit, die zweite 10, die dritte 11 und die vierte ist von variabler Breite.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Führen Sie eine Iteration auf die Felder in der Datei aus. Wenn Zeilen fehlerhaft sind, melden Sie einen Fehler, und setzen Sie die Analyse fort.

    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. 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.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

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).

Weitere Informationen