Condividi tramite


Procedura: leggere file di testo a larghezza fissa in Visual Basic

Aggiornamento: novembre 2007

L'oggetto TextFieldParser consente di analizzare in modo facile ed efficace i file di testo strutturati, ad esempio i log.

La proprietà TextFieldType definisce se si tratta di un file delimitato o di un file con campi di testo a larghezza fissa. Per specificare un campo di larghezza variabile in un file a larghezza fissa, impostare la larghezza del campo su -1.

Per analizzare un file di testo a larghezza fissa

  1. Creare un nuovo oggetto TextFieldParser. Nel codice riportato di seguito viene creato l'oggetto TextFieldParser denominato Reader e viene aperto il file test.log.

    Using Reader As New _
    Microsoft.VisualBasic.FileIO.TextFieldParser _
    ("C:\TestFolder\test.log")
    
  2. Definire la proprietà TextFieldType come FixedWidth, impostandone la larghezza e il formato. Nel codice riportato di seguito vengono definite le colonne di testo: la prima ha una larghezza pari a 5 caratteri, la seconda a 10, la terza a 11 e la quarta ha una larghezza variabile.

    Reader.TextFieldType = _
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Scorrere i campi nel file. Se sono presenti righe danneggiate, segnalare l'errore e continuare l'analisi.

    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. Chiudere i blocchi While e Using con End While e End Using.

       End While
    End Using
    

Esempio

Nell'esempio riportato di seguito la lettura viene eseguita dal 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

Programmazione efficiente

Le seguenti condizioni possono generare un'eccezione:

Vedere anche

Attività

Procedura: leggere file di testo delimitati da virgola in Visual Basic

Procedura: leggere file di testo con più formati in Visual Basic

Procedura dettagliata: modifica di file e directory in Visual Basic

Risoluzione dei problemi: lettura e scrittura nei file di testo

Risoluzione dei problemi relativi alle eccezioni: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Concetti

Analisi dei file di testo con l'oggetto TextFieldParser

Riferimenti

Oggetto TextFieldParser