Condividi tramite


Procedura: leggere file di testo delimitati da virgola 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 si tratta di un file delimitato o di un file con campi di testo a larghezza fissa.

Per analizzare un file di testo delimitato da virgole

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

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Definire il tipo TextField e il delimitatore. Nel codice riportato di seguito viene definita la proprietà TextFieldType come Delimited e il delimitatore come ",".

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Scorrere i campi nel file. Se sono presenti righe danneggiate, segnalare l'errore e continuare l'analisi. Nel codice riportato di seguito viene eseguito un ciclo nel file, visualizzando ciascun campo e segnalando qualsiasi campo formattato in modo errato.

    
    Dim currentRow As String()
       While Not MyReader.EndOfData
          Try
             currentRow = MyReader.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.txt.

  Using MyReader As New Microsoft.VisualBasic.
                        FileIO.TextFieldParser(
                          "C:\TestFolder\test.txt")
   MyReader.TextFieldType = FileIO.FieldType.Delimited
   MyReader.SetDelimiters(",")
   Dim currentRow As String()
   While Not MyReader.EndOfData
      Try
         currentRow = MyReader.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 a larghezza fissa 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)