Compartir a través de


Procedimiento para leer archivos de texto delimitados por comas en Visual Basic

El TextFieldParser objeto proporciona una manera de analizar archivos de texto estructurados de forma fácil y eficaz, como registros. La TextFieldType propiedad define si es un archivo delimitado o uno con campos de ancho fijo de texto.

Para analizar un archivo de texto delimitado por comas

  1. Crear un nuevo TextFieldParser. El código siguiente crea el TextFieldParser objeto denominado MyReader y abre el archivo test.txt.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Definir el tipo TextField y el delimitador. El código siguiente define la TextFieldType propiedad como Delimited y el delimitador como ",".

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Recorra en bucle los campos del archivo. Si alguna línea está dañada, notifique un error y continúe el análisis. El código siguiente recorre en bucle el archivo, mostrando cada campo a su vez e informando de los campos con formato incorrecto.

    
    Dim currentRow As String()
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.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
    
  4. Cierre los While bloques y Using con End While y End Using.

        End While
    End Using
    

Ejemplo

En este ejemplo se lee el archivo test.txt.

Using MyReader As New Microsoft.VisualBasic.
                      FileIO.TextFieldParser(
                        "C:\TestFolder\test.txt")
    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    Dim currentRow As String()
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.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 sólida

Las condiciones siguientes pueden provocar una excepción:

  • No se puede analizar una fila con el formato especificado (MalformedLineException). El mensaje de excepción especifica la línea que provoca la excepción, mientras que a la ErrorLine propiedad se le asigna el texto contenido en la línea.

  • El archivo especificado no existe (FileNotFoundException).

  • Situación de confianza parcial en la que el usuario no tiene permisos suficientes para acceder al archivo. (SecurityException).

  • La ruta de acceso del archivo es demasiado larga (PathTooLongException).

  • El usuario no tiene permisos suficientes para acceder al archivo (UnauthorizedAccessException).

Consulte también