Analisi dei file di testo con l'oggetto TextFieldParser (Visual Basic)
L'oggetto TextFieldParser
consente di analizzare ed elaborare file di grandi dimensioni strutturati come colonne di testo a larghezza delimitata, ad esempio i file di log e le informazioni sul database legacy. L'analisi di un file di testo con TextFieldParser
è simile all'esecuzione di un'iterazione di un file di testo, mentre l'uso del metodo di analisi per l'estrazione dei campi di testo è analogo ai metodi di modifica delle stringhe usati per rappresentare in formato tokene le stringhe delimitate.
Analisi dei diversi tipi di file di testo
I file di testo possono contenere campi di larghezza diversa delimitati da caratteri, ad esempio da una virgola o da uno spazio di tabulazione. Definire TextFieldType
e il delimitatore, come illustrato nell'esempio seguente, dove viene usato il metodo SetDelimiters
per definire un file di testo delimitato da tabulazioni:
testReader.SetDelimiters(vbTab)
Altri file di testo potrebbero contenere larghezze di campo fisse. In questi casi è necessario definire TextFieldType
come FixedWidth
e stabilire la larghezza di ogni campo, come nell'esempio riportato di seguito. In questo esempio viene usato il metodo SetFieldWidths
per definire le colonne di testo: la prima colonna ha una larghezza di 5 caratteri, la seconda di 10, la terza di 11 e la quarta è di larghezza variabile.
testReader.SetFieldWidths(5, 10, 11, -1)
testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
Dopo aver definito il formato, è possibile riprodurre a ciclo continuo il file usando il metodo ReadFields
per elaborare una riga per volta.
Se un campo non corrisponde al formato specificato viene generata l'eccezione MalformedLineException. Quando vengono generate eccezioni di questo genere, le proprietà ErrorLine
e ErrorLineNumber
contengono il testo che genera l'eccezione e il numero di riga corrispondente.
Analisi dei file con più formati
Il metodo PeekChars
dell'oggetto TextFieldParser
può essere usato per controllare ogni campo prima che venga letto, consentendo così di definire più formati per i campi e reagire di conseguenza. Per altre informazioni, vedere Procedura: Leggere da file di testo con più formati.