Procedura: Leggere da file di testo con valori delimitati da virgole 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 con valori delimitati da virgole

  1. Creare un nuovo TextFieldParser. Il codice riportato di seguito crea l'oggetto TextFieldParser denominato MyReader e apre 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. Eseguire il ciclo attraverso i campi nel file. Se sono presenti righe danneggiate, segnalare un errore e continuare l'analisi. Nel codice riportato di seguito viene eseguito un ciclo attraverso il file, visualizzando ogni campo e segnalando eventuali campi formattati 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 ed End Using.

        End While
    End Using
    

Esempio

Nell'esempio riportato di seguito viene letto il 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:

  • Impossibile analizzare la riga usando il formato specificato (MalformedLineException). Il messaggio di eccezione specifica la riga che ha generato l'eccezione, mentre alla proprietà ErrorLine viene assegnato il testo contenuto nella riga.

  • File specificato inesistente (FileNotFoundException).

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

  • Percorso del file troppo lungo (PathTooLongException).

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

Vedi anche