Anvisningar: Läsa från kommaavgränsade textfiler i Visual Basic
Objektet TextFieldParser
är ett sätt att enkelt och effektivt parsa strukturerade textfiler, till exempel loggar. Egenskapen TextFieldType
definierar om det är en avgränsad fil eller en fil med textfält med fast bredd.
Så här parsar du en kommaavgränsad textfil
Skapa en ny
TextFieldParser
. Följande kod skapar namnetTextFieldParser
MyReader
och öppnar filentest.txt
.Using MyReader As New Microsoft.VisualBasic. FileIO.TextFieldParser( "C:\TestFolder\test.txt")
TextField
Definiera typen och avgränsare. Följande kod definierarTextFieldType
egenskapen somDelimited
och avgränsare som ",".MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters(",")
Loopa igenom fälten i filen. Om några rader är skadade rapporterar du ett fel och fortsätter att parsa. Följande kod loopar genom filen, visar varje fält i tur och ordning och rapporterar eventuella fält som är felaktigt formaterade.
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
Stäng blocken
While
ochUsing
medEnd While
ochEnd Using
.End While End Using
Exempel
Det här exemplet läser från filen test.txt
.
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
Robust programmering
Följande villkor kan orsaka ett undantag:
Det går inte att parsa en rad med det angivna formatet (MalformedLineException). Undantagsmeddelandet anger den rad som orsakar undantaget, medan ErrorLine egenskapen tilldelas texten som finns på raden.
Den angivna filen finns inte (FileNotFoundException).
En partiell förtroendesituation där användaren inte har tillräcklig behörighet för att komma åt filen. (SecurityException).
Sökvägen är för lång (PathTooLongException).
Användaren har inte tillräcklig behörighet för att komma åt filen (UnauthorizedAccessException).