Parsing text files with the TextFieldParser object (Visual Basic)
The TextFieldParser
object allows you to parse and process very large file that are structured as delimited-width columns of text, such as log files or legacy database information. Parsing a text file with TextFieldParser
is similar to iterating over a text file, while the parse method to extract fields of text is similar to string manipulation methods used to tokenize delimited strings.
Parsing different types of text files
Text files may have fields of various width, delimited by a character such as a comma or a tab space. Define TextFieldType
and the delimiter, as in the following example, which uses the SetDelimiters
method to define a tab-delimited text file:
testReader.SetDelimiters(vbTab)
Other text files may have field widths that are fixed. In such cases, you need to define the TextFieldType
as FixedWidth
and define the widths of each field, as in the following example. This example uses the SetFieldWidths
method to define the columns of text: the first column is 5 characters wide, the second is 10, the third is 11, and the fourth is of variable width.
testReader.SetFieldWidths(5, 10, 11, -1)
testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
Once the format is defined, you can loop through the file, using the ReadFields
method to process each line in turn.
If a field does not match the specified format, a MalformedLineException exception is thrown. When such exceptions are thrown, the ErrorLine
and ErrorLineNumber
properties hold the text causing the exception and the line number of that text.
Parsing files with multiple formats
The PeekChars
method of the TextFieldParser
object can be used to check each field before reading it, allowing you to define multiple formats for the fields and react accordingly. For more information, see How to: Read From Text Files with Multiple Formats.