Bagikan melalui


Cara: membaca dari file teks 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. Membuat baru TextFieldParser. 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 properti TextFieldType sebagai mana FixedWidth, menentukan lebar dan format. Kode berikut menentukan kolom teks; yang pertama dengan lebar 5 karakter, 10 kedua, 11 ketiga, dan keempat adalah lebar variabel.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Pengulangan melalui bidang 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