Bagikan melalui


Cara membaca dari file teks dengan lebar tetap di Visual Basic

Objek TextFieldParser menyediakan cara untuk mengurai file teks terstruktur dengan mudah dan efisien, seperti log.

Properti TextFieldType menentukan apakah file yang diurai adalah file yang dibatasi atau yang memiliki bidang teks lebar tetap. Dalam file teks lebar tetap, bidang di akhir dapat memiliki lebar variabel. Untuk menentukan bahwa bidang di akhir memiliki lebar variabel, tentukan agar memiliki lebar kurang dari atau sama dengan nol.

Untuk mengurai file teks lebar tetap

  1. Buat TextFieldParserbaru . Kode berikut membuat TextFieldParser bernama Reader dan membuka file test.log.

    Using Reader As New Microsoft.VisualBasic.
        FileIO.TextFieldParser("C:\TestFolder\test.log")
    
  2. Tentukan TextFieldType properti sebagai FixedWidth, menentukan lebar dan format. Kode berikut menentukan kolom teks; yang pertama adalah lebar 5 karakter, kedua 10, ketiga 11, dan keempat adalah lebar variabel.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Iterasi melalui kolom dalam file. Jika ada baris yang rusak, laporkan kesalahan dan lanjutkan penguraian.

    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
    
  4. Tutup blok While dan Using dengan End While dan End Using.

        End While
    End Using
    

Contoh

Contoh ini membaca dari file 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

Pemrograman yang kuat

Kondisi berikut dapat menyebabkan pengecualian:

Lihat juga