Cómo: Leer archivos de texto de ancho fijo en Visual Basic
Actualización: noviembre 2007
El objeto TextFieldParser proporciona un método para analizar de forma sencilla y eficaz archivos de texto estructurados, como registros.
La propiedad TextFieldType define si se trata de un archivo delimitado o uno con campos de ancho fijo de texto. Para especificar un campo de ancho variable en un archivo de ancho fijo, defina el ancho de campo como -1.
Para analizar un archivo de texto de ancho fijo
Cree un nuevo objeto TextFieldParser. El código siguiente crea el objeto TextFieldParser denominado Reader y abre el archivo test.log.
Using Reader As New _ Microsoft.VisualBasic.FileIO.TextFieldParser _ ("C:\TestFolder\test.log")
Defina la propiedad TextFieldType como FixedWidth, definiendo el ancho y el formato. El código siguiente define las columnas de texto; la primera tiene un ancho de 5 caracteres, la segunda de 10, la tercera de 11 y la cuarta es de ancho variable.
Reader.TextFieldType = _ Microsoft.VisualBasic.FileIO.FieldType.FixedWidth Reader.SetFieldWidths(5, 10, 11, -1)
Recorra los campos del archivo. Si alguna línea está dañada, cree un informe de error y continúe el análisis.
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
Cierre los bloques While y Using con End While y End Using.
End While End Using
Ejemplo
En este ejemplo se lee el archivo 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
Programación eficaz
Las condiciones siguientes pueden producir una excepción:
No se puede analizar una fila con el formato especificado (MalformedLineException). El mensaje de excepción especifica la línea que produce la excepción y se asigna TextFieldParser.ErrorLine (Propiedad) al texto contenido en la línea.
El archivo especificado no existe (FileNotFoundException).
Una situación de confianza parcial en la que el usuario no tiene los permisos necesarios para tener acceso al archivo. (SecurityException).
La ruta de acceso es demasiado larga (PathTooLongException).
El usuario no tiene permisos suficientes para el acceso al archivo (UnauthorizedAccessException).
Vea también
Tareas
Cómo: Leer archivos de texto delimitado por comas en Visual Basic
Cómo: Leer archivos de texto con varios formatos en Visual Basic
Tutorial: Manipular archivos y directorios en Visual Basic
Solución de problemas: Leer y escribir en archivos de texto
Conceptos
Analizar archivos de texto con el objeto TextFieldParser