Dela via


Anvisningar: Läsa från kommaavgränsade textfiler i Visual Basic

Objektet TextFieldParser är ett sätt att enkelt och effektivt parsa strukturerade textfiler, till exempel loggar. Egenskapen TextFieldType definierar om det är en avgränsad fil eller en fil med textfält med fast bredd.

Så här parsar du en kommaavgränsad textfil

  1. Skapa en ny TextFieldParser. Följande kod skapar namnet TextFieldParserMyReader och öppnar filen test.txt.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. TextField Definiera typen och avgränsare. Följande kod definierar TextFieldType egenskapen som Delimited och avgränsare som ",".

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Loopa igenom fälten i filen. Om några rader är skadade rapporterar du ett fel och fortsätter att parsa. Följande kod loopar genom filen, visar varje fält i tur och ordning och rapporterar eventuella fält som är felaktigt formaterade.

    
    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. Stäng blocken While och Using med End While och End Using.

        End While
    End Using
    

Exempel

Det här exemplet läser från filen 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

Robust programmering

Följande villkor kan orsaka ett undantag:

Se även