Sdílet prostřednictvím


Postupy: Čtení z textových souborů 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

Postupy: Čtení z textových souborů s oddělovači v jazyce Visual Basic

Postupy: Čtení z textových souborů ve více formátech v jazyce Visual Basic

Návod: Práce se soubory a adresáři v jazyce Visual Basic

Řešení potíží: Čtení z textových souborů a zápis do nich (Visual Basic)

Řešení potíží s výjimkami: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Referenční dokumentace

TextFieldParser

Koncepty

Analýza textových souborů pomocí objektu TextFieldParser (Visual Basic)