Condividi tramite


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

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 il file analizzato è un file delimitato o un file con campi di testo a larghezza fissa. In un file di testo a larghezza fissa, il campo alla fine può avere una larghezza variabile. Per specificare che il campo alla fine ha una larghezza variabile, definirlo in modo che abbia una larghezza minore o uguale a zero.

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:

  • Non è possibile analizzare una riga utilizzando il formato specificato (MalformedLineException). Nel messaggio di eccezione viene specificata la riga che ha generato l'eccezione, mentre la proprietà ErrorLine viene assegnata al testo contenuto nella riga.

  • Il file specificato non esiste (FileNotFoundException).

  • Un contesto di attendibilità parziale in cui gli utenti non dispongono di autorizzazioni sufficienti per accedere al file (SecurityException).

  • Il percorso è troppo lungo (PathTooLongException).

  • L'utente non dispone delle autorizzazioni sufficienti per accedere al file (UnauthorizedAccessException).

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 (Visual Basic)

Troubleshooting Exceptions: Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Riferimenti

Microsoft.VisualBasic.FileIO.TextFieldParser

Concetti

Analisi dei file di testo con l'oggetto TextFieldParser (Visual Basic)

Cronologia delle modifiche

Data

Cronologia

Motivo

Gennaio 2011

Aggiunte informazioni sui campi a larghezza variabile.

Commenti e suggerimenti dei clienti.