Procedura: Leggere da file di testo a larghezza fissa in Visual Basic
L'oggetto TextFieldParser
consente di analizzare in modo facile ed efficace i file di testo strutturati, ad esempio i log.
La proprietà TextFieldType
definisce se il file analizzato è un file delimitato o un file con campi di testo a larghezza fissa. In un file di testo a larghezza fissa il campo alla fine può avere una larghezza variabile. Per specificare che il campo alla fine deve avere una larghezza variabile, definirlo in modo che abbia una larghezza minore o uguale a zero.
Per analizzare un file di testo a larghezza fissa
Creare un nuovo
TextFieldParser
. Il codice riportato di seguito crea l'oggettoTextFieldParser
denominatoReader
e apre il filetest.log
.Using Reader As New Microsoft.VisualBasic. FileIO.TextFieldParser("C:\TestFolder\test.log")
Definire la proprietà
TextFieldType
comeFixedWidth
, impostandone la larghezza e il formato. Il codice seguente definisce le colonne di testo: la prima ha una larghezza di 5 caratteri, la seconda di 10 e la terza di 11, mentre la quarta ha una larghezza variabile.Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth Reader.SetFieldWidths(5, 10, 11, -1)
Eseguire il ciclo attraverso i campi nel file. Se sono presenti righe danneggiate, segnalare un errore e continuare l'analisi.
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
Chiudere i blocchi
While
eUsing
conEnd While
edEnd Using
.End While End Using
Esempio
Nell'esempio riportato di seguito viene letto il 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
Programmazione efficiente
Le seguenti condizioni possono generare un'eccezione:
Impossibile analizzare la riga usando il formato specificato (MalformedLineException). Il messaggio di eccezione specifica la riga che ha generato l'eccezione, mentre alla proprietà ErrorLine viene assegnato il testo contenuto nella riga.
File specificato inesistente (FileNotFoundException).
Un contesto di attendibilità parziale in cui gli utenti non dispongono di autorizzazioni sufficienti per accedere al file (SecurityException).
Percorso del file troppo lungo (PathTooLongException).
L'utente non dispone di autorizzazioni sufficienti per accedere al file (UnauthorizedAccessException).
Vedi anche
- Microsoft.VisualBasic.FileIO.TextFieldParser
- Procedura: leggere da file di testo delimitati da virgola
- Procedura: Leggere da file di testo con più formati
- Analisi dei file di testo con l'oggetto TextFieldParser
- Procedura dettagliata: modifica di file e directory in Visual Basic
- Risoluzione dei problemi: lettura e scrittura nei file di testo