Gewusst wie: Lesen aus einer Textdatei mit fester Breite in Visual BasicHow to: read from fixed-width text files in Visual Basic

Das TextFieldParser-Objekt bietet eine Möglichkeit, strukturierte Textdateien wie Protokolle einfach und effizient zu analysieren.The TextFieldParser object provides a way to easily and efficiently parse structured text files, such as logs.

Die TextFieldType-Eigenschaft definiert, ob es sich bei der analysierten Datei um eine Datei mit Trennzeichen oder mit Textfeldern fester Breite handelt.The TextFieldType property defines whether the parsed file is a delimited file or one that has fixed-width fields of text. In einer Textdatei mit fester Breite kann das Feld am Ende über eine variable Breite verfügen.In a fixed-width text file, the field at the end can have a variable width. Um anzugeben, dass das Feld am Ende eine variable Breite besitzt, definieren Sie seine Breite kleiner als oder gleich 0 (null).To specify that the field at the end has a variable width, define it to have a width less than or equal to zero.

So analysieren Sie Textdatei mit fester BreiteTo parse a fixed-width text file

  1. Erstellen Sie einen neuen TextFieldParser.Create a new TextFieldParser. Der folgende Code erstellt den TextFieldParser namens Reader und öffnet die Datei test.log.The following code creates the TextFieldParser named Reader and opens the file 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.Define the TextFieldType property as FixedWidth, defining the width and format. 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.The following code defines the columns of text; the first is 5 characters wide, the second 10, the third 11, and the fourth is of variable width.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Durchlaufen Sie die Felder in der Datei.Loop through the fields in the file. Wenn Zeilen fehlerhaft sind, melden Sie einen Fehler, und setzen Sie die Analyse fort.If any lines are corrupted, report an error and continue parsing.

    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.Close the While and Using blocks with End While and End Using.

       End While
    End Using
    

BeispielExample

In diesem Beispiel wird aus der Datei test.log gelesen.This example reads from the file test.log.

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 ProgrammierungRobust programming

Die folgenden Bedingungen können einen Ausnahmefehler verursachen:The following conditions may cause an exception:

Siehe auchSee also

Microsoft.VisualBasic.FileIO.TextFieldParser
Gewusst wie: Lesen aus Textdateien mit KommatrennungHow to: Read From Comma-Delimited Text Files
Gewusst wie: Lesen aus Textdateien mit mehreren FormatenHow to: Read From Text Files with Multiple Formats
Analysieren von Textdateien mit dem TextFieldParser-ObjektParsing Text Files with the TextFieldParser Object
Exemplarische Vorgehensweise: Bearbeiten von Dateien und Verzeichnissen in Visual BasicWalkthrough: Manipulating Files and Directories in Visual Basic
Problembehandlung: Lesen aus und Schreiben in TextdateienTroubleshooting: Reading from and Writing to Text Files