Udostępnij za pośrednictwem


Porady: odczyt z plików testowych o stałej szerokości w Visual Basic

TextFieldParser Obiektu daje możliwość łatwego i efektywnego analizować pliki tekstowe strukturalne, takie jak dzienniki.

TextFieldType Właściwość określa, czy jest analizowana składniowo pliku, plik rozdzielany lub taki, który zawiera pola o stałej szerokości tekstu.W pliku tekstowym o stałej szerokości pole na końcu może mieć zmiennej szerokości.Aby określić, że pole na końcu ma zmiennej szerokość, zdefiniuj mają szerokość mniejszą niż lub równa zero.

Aby analizować plik tekstu o stałej szerokości

  1. Utwórz nowy TextFieldParser.Poniższy kod tworzy TextFieldParser o nazwie Reader i otwiera plik test.log.

    Using Reader As New Microsoft.VisualBasic.
        FileIO.TextFieldParser("C:\TestFolder\test.log")
    
  2. Definiowanie TextFieldType właściwości jako FixedWidth, definiowanie szerokości i format.W poniższym kodzie zdefiniowano kolumn tekstu; pierwszy z nich to 5 znaków, drugie 10, 11 trzeci i czwarty jest o zmiennej szerokości.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. W pętli pól w pliku.Jeśli wszystkie wiersze są uszkodzone, Zgłoś błąd i kontynuować analizowania.

    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. Close the While and Using blocks with End While and End Using.

    End While 
    End Using
    

Przykład

W tym przykładzie odczytuje z pliku 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

Stabilne programowanie

Następujące warunki, może spowodować wyjątek:

Zobacz też

Zadania

Porady: odczyt z rozdzielonych przecinkami plików testowych w Visual Basic

Porady: odczyt z plików tekstowych w wielu formatach w Visual Basic

Wskazówki: manipulowanie plikami i katalogami w Visual Basic

Rozwiązywanie problemów: odczytywanie z oraz zapisywanie w plikach tekstowych (Visual Basic)

Rozwiązywanie problemów z wyjątkami: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Informacje

TextFieldParser

Koncepcje

Analizowanie plików tekstowych za pomocą obiektu TextFieldParser (Visual Basic)