Sdílet prostřednictvím


Jak: číst soubory s pevnou šířkou v jazyce Visual Basic

Objekt TextFieldParser umožňuje snadnou a efektivní cestu k zpracování strukturovaných textový souborů, jakými jsou například protokoly.

TextFieldType Vlastnost určuje, zda soubor analyzovanou souboru s oddělovači nebo která obsahuje pole s pevnou šířkou textu.V souboru s pevnou šířkou pole na konci může mít proměnnou šířku.Chcete-li určit, zda má pole na konci proměnné šířky, definujte ji mít šířku menší než nebo rovna nule.

Chcete-li analyzovat textový soubor o pevné šířce

  1. Vytvořte nový TextFieldParser.Následující kód vytvoří TextFieldParser s názvem Reader a otevře soubor test.log.

    Using Reader As New Microsoft.VisualBasic.
        FileIO.TextFieldParser("C:\TestFolder\test.log")
    
  2. Definujte vlastnost TextFieldType jako FixedWidth, nastavte šířku a formát. Následující kód definuje sloupce textu; první je 5 znaků široký, druhý 10, třetí 11 a čtvrtý je proměnné šířky.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Projděte všechny pole v souboru.Pokud jsou řádky poškozeny, ohlaste chybu a pokračujte v analýze.

    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. Zavřete bloky While a Using pomocí End While a End Using.

       End While
    End Using
    

Příklad

V tomto příkladu načteme soubor 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

Robustní programování

Následující případy mohou způsobit výjimku:

Viz také

Úkoly

Jak: číst soubory textu odděleného čárkami v jazyce Visual Basic

Jak: čtení z textových souborů s více formáty jazyka Visual Basic

Názorný postup: Zpracování souborů a adresářů v jazyce Visual Basic

Poradce při potížích: Čtení a zápisu do textových souborů (Visual Basic)

Poradce při potížích s výjimkami: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Referenční dokumentace

Microsoft.VisualBasic.FileIO.TextFieldParser

Koncepty

Analýza textové soubory s objektem TextFieldParser (Visual Basic)