Porady: odczytywanie z plików tekstowych o stałej szerokości w Visual Basic
Obiekt TextFieldParser
umożliwia łatwe i wydajne analizowanie plików tekstowych ze strukturą, takich jak dzienniki.
Właściwość TextFieldType
określa, czy przeanalizowany plik jest plikiem rozdzielanym, czy ma pola tekstu o stałej szerokości. W pliku tekstowym o stałej szerokości pole na końcu może mieć zmienną szerokość. Aby określić, że pole na końcu ma zmienną szerokość, zdefiniuj je tak, aby szerokość była mniejsza lub równa zero.
Aby przeanalizować plik tekstowy o stałej szerokości
Utwórz nowy element
TextFieldParser
. Poniższy kod tworzyTextFieldParser
nazwęReader
i otwiera pliktest.log
.Using Reader As New Microsoft.VisualBasic. FileIO.TextFieldParser("C:\TestFolder\test.log")
Zdefiniuj
TextFieldType
właściwość jakoFixedWidth
, definiując szerokość i format. Poniższy kod definiuje kolumny tekstu; pierwszy to 5 znaków szerokości, drugi 10, trzeci 11, a czwarty ma zmienną szerokość.Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth Reader.SetFieldWidths(5, 10, 11, -1)
Pętla przez pola w pliku. Jeśli jakiekolwiek wiersze są uszkodzone, zgłoś błąd i kontynuuj analizowanie.
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
Zamknij bloki
While
iUsing
za pomocą elementówEnd While
i iEnd Using
.End While End Using
Przykład
Ten przykład odczytuje z pliku 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
Niezawodne programowanie
Następujące warunki mogą spowodować wyjątek:
Nie można przeanalizować wiersza przy użyciu określonego formatu (MalformedLineException). Komunikat o wyjątku określa wiersz powodujący wyjątek, podczas gdy ErrorLine właściwość jest przypisana do tekstu zawartego w wierszu.
Określony plik nie istnieje (FileNotFoundException).
Sytuacja częściowego zaufania, w której użytkownik nie ma wystarczających uprawnień dostępu do pliku. (SecurityException).
Ścieżka jest za długa (PathTooLongException).
Użytkownik nie ma wystarczających uprawnień dostępu do pliku (UnauthorizedAccessException).
Zobacz też
- Microsoft.VisualBasic.FileIO.TextFieldParser
- Instrukcje: odczyt z rozdzielonych przecinkami plików testowych
- Instrukcje: odczyt z plików tekstowych w wielu formatach
- Analizowanie plików tekstowych za pomocą obiektu TextFieldParser
- Przewodnik: manipulowanie plikami i katalogami w Visual Basic
- Rozwiązywanie problemów: odczytywanie z plików tekstowych oraz zapisywanie w nich