Gewusst wie: Lesen aus einer Textdatei mit fester Breite in Visual Basic
Mit dem TextFieldParser-Objekt können strukturierte Textdateien, z. B. Protokolle, leicht und effizient analysiert werden.
Die TextFieldType-Eigenschaft definiert, ob es sich bei der analysierten Datei um eine Datei mit Trennzeichen oder um eine Datei mit Textfeldern fester Breite handelt. In einer Textdatei mit fester Breite kann das Feld am Ende über eine variable Breite verfügen. Legen Sie für ein Feld eine Breite von kleiner oder gleich 0 (null) fest, wenn das Feld am Ende über eine variable Breite verfügen soll.
So analysieren Sie eine Textdatei mit fester Breite
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")
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)
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
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
Die folgenden Bedingungen können einen Ausnahmefehler verursachen:
Eine Zeile kann nicht mit dem angegebenen Format analysiert werden (MalformedLineException). In der Ausnahmemeldung wird die Nummer der Zeile angegeben, die die Ausnahme verursacht hat. Der in der Zeile enthaltene Text wird der ErrorLine-Eigenschaft zugewiesen.
Die angegebene Datei ist nicht vorhanden (FileNotFoundException).
Es besteht eine teilweise vertrauenswürdige Situation, in der der Benutzer nicht über ausreichende Berechtigungen für den Zugriff auf die Datei verfügt. (SecurityException).
Der Pfad ist zu lang (PathTooLongException).
Der Benutzer verfügt nicht über ausreichende Berechtigungen für den Zugriff auf die Datei (UnauthorizedAccessException).
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 (Visual Basic)
Problembehandlung bei Ausnahmen: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException
Referenz
Microsoft.VisualBasic.FileIO.TextFieldParser
Konzepte
Analysieren von Textdateien mit dem TextFieldParser-Objekt (Visual Basic)
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
Januar 2011 |
Informationen zu Feldern mit variabler Breite wurden hinzugefügt. |
Kundenfeedback. |