使用 TextFieldParser 对象分析文本文件 (Visual Basic)
使用 TextFieldParser
对象可以分析和处理非常大的文件,这些文件的结构是以宽度分隔的文本列,如日志文件或旧版数据库信息。 使用 TextFieldParser
分析文本文件与循环访问文本文件相似,而提取文本字段的分析方法则与将分隔字符串标记化所使用的字符串操作方法相似。
分析不同类型的文本文件
文本文件包含的字段可能有多种宽度,也可能使用字符(如逗号或制表符)分隔。 如以下示例所示,定义 TextFieldType
和分隔符,该示例使用 SetDelimiters
方法定义制表符分隔的文本文件:
testReader.SetDelimiters(vbTab)
其他文本文件可能包含固定宽度的字段。 在这种情况下,需要将 TextFieldType
定义为 FixedWidth
,并定义各字段的宽度,如以下示例所示。 此示例使用 SetFieldWidths
方法定义文本列:第一列的宽度为 5 个字符,第二列的宽度为 10 个字符,第三列的宽度为 11 个字符,第四列的宽度是可变的。
testReader.SetFieldWidths(5, 10, 11, -1)
testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
定义格式之后,即可使用 ReadFields
方法依次处理各行来循环访问文件。
如果字段与指定的格式不符,则会引发 MalformedLineException 异常。 引发此类异常时,ErrorLine
和 ErrorLineNumber
属性将分别包含导致此异常的文本以及该文本所在的行号。
分析具有多种格式的文件
在读取各字段之前,可以使用 TextFieldParser
对象的 PeekChars
方法来检查字段,这样可以为字段定义多种格式并采取相应的操作。 有关详细信息,请参阅如何:读取具有多种格式的文本文件。