Partager via


Guide pratique pour lire des fichiers texte délimités par des virgules dans Visual Basic

L’objet TextFieldParser permet d’analyser facilement et efficacement les fichiers texte structurés, tels que les journaux d’activité. La TextFieldType propriété définit s’il s’agit d’un fichier délimité ou d’un fichier avec des champs de texte à largeur fixe.

Pour analyser un fichier texte délimité par des virgules

  1. Créez un élément TextFieldParser. Le code suivant crée le TextFieldParser nom MyReader et ouvre le fichier test.txt.

    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Définissez le type et le TextField délimiteur. Le code suivant définit la TextFieldType propriété comme Delimited et le délimiteur comme « , ».

    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. Effectuez une boucle dans les champs du fichier. Si des lignes sont endommagées, signalez une erreur et poursuivez l’analyse. Le code suivant effectue une boucle dans le fichier, affichant chaque champ à son tour et signalant les champs mis en forme de manière incorrecte.

    
    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. Fermez les While blocs Using avec End While et End Using.

        End While
    End Using
    

Exemple :

Cet exemple lit à partir du fichier 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

Programmation fiable

Les conditions suivantes peuvent entraîner une exception :

  • Une ligne ne peut pas être analysée à l’aide du format spécifié (MalformedLineException). Le message d’exception spécifie la ligne à l’origine de l’exception, tandis que la ErrorLine propriété reçoit le texte contenu dans la ligne.

  • Le fichier spécifié n’existe pas (FileNotFoundException).

  • Situation de confiance partielle dans laquelle l’utilisateur ne dispose pas des autorisations suffisantes pour accéder au fichier. (SecurityException).

  • Le chemin d’accès est trop long (PathTooLongException).

  • L’utilisateur ne dispose pas des autorisations suffisantes pour accéder au fichier (UnauthorizedAccessException).

Voir aussi