Aracılığıyla paylaş


Nasıl yapılır: Visual Basic'te virgülle ayrılmış metin dosyalarından okuma

TextFieldParser nesnesi, günlükler gibi yapılandırılmış metin dosyalarını kolayca ve verimli bir şekilde ayrıştırmak için bir yol sağlar. özelliği, TextFieldType sınırlandırılmış bir dosya mı yoksa sabit genişlikli metin alanları olan bir dosya mı olduğunu tanımlar.

Virgülle ayrılmış metin dosyasını ayrıştırmak için

  1. Yeni TextFieldParserbir oluşturun. Aşağıdaki kod adlı MyReader öğesini TextFieldParser oluşturur ve dosyasını test.txtaçar.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Türü ve sınırlayıcıyı TextField tanımlayın. Aşağıdaki kod özelliği olarak Delimited ve sınırlayıcıyı "," olarak tanımlarTextFieldType.

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Dosyadaki alanlarda döngü yapın. Herhangi bir satır bozuksa bir hata bildirin ve ayrıştırma işlemine devam edin. Aşağıdaki kod, dosyada döngü yaparak her alanı sırayla görüntüler ve yanlış biçimlendirilmiş alanları bildirir.

    
    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. While ve ile ve Using bloklarını End WhileEnd Usingkapatın.

        End While
    End Using
    

Örnek

Bu örnek dosyasından test.txtokur.

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

Sağlam programlama

Aşağıdaki koşullar özel bir duruma neden olabilir:

Ayrıca bkz.