Delen via


Procedure: lezen uit door komma's gescheiden tekstbestanden in Visual Basic

Het TextFieldParser object biedt een manier om gestructureerde tekstbestanden, zoals logboeken, eenvoudig en efficiƫnt te parseren. De TextFieldType eigenschap bepaalt of het een bestand met scheidingstekens is of een met velden met vaste breedte van tekst.

Een door komma's gescheiden tekstbestand parseren

  1. Maak een nieuwe TextFieldParser. Met de volgende code wordt de TextFieldParser benoemde gemaakt MyReader en wordt het bestand geopend test.txt.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Definieer het TextField type en het scheidingsteken. De volgende code definieert de TextFieldType eigenschap als Delimited en het scheidingsteken als ','.

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Doorloop de velden in het bestand. Als er regels beschadigd zijn, meldt u een fout en gaat u door met parseren. De volgende code doorloopt het bestand, waarin elk veld op zijn beurt wordt weergegeven en alle velden worden gerapporteerd die onjuist zijn opgemaakt.

    
    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. Sluit de While en Using blokken met End While en End Using.

        End While
    End Using
    

Opmerking

In dit voorbeeld wordt uit het bestand test.txtgelezen.

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

Robuuste programmering

De volgende voorwaarden kunnen een uitzondering veroorzaken:

  • Een rij kan niet worden geparseerd met behulp van de opgegeven indeling (MalformedLineException). In het uitzonderingsbericht wordt de regel opgegeven die de uitzondering veroorzaakt, terwijl aan de ErrorLine eigenschap de tekst in de regel wordt toegewezen.

  • Het opgegeven bestand bestaat niet (FileNotFoundException).

  • Een gedeeltelijke vertrouwenssituatie waarbij de gebruiker niet over voldoende machtigingen beschikt om toegang te krijgen tot het bestand. (SecurityException).

  • Het pad is te lang (PathTooLongException).

  • De gebruiker heeft onvoldoende machtigingen voor toegang tot het bestand (UnauthorizedAccessException).

Zie ook