Partager via


Guide pratique pour lire des fichiers texte à largeur fixe 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 si le fichier analysé est un fichier délimité ou un fichier avec des champs de largeur fixe de texte. Dans un fichier texte de largeur fixe, le champ à la fin peut avoir une largeur variable. Pour spécifier que le champ à la fin a une largeur variable, définissez-le pour avoir une largeur inférieure ou égale à zéro.

Pour analyser un fichier texte à largeur fixe

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

    Using Reader As New Microsoft.VisualBasic.
        FileIO.TextFieldParser("C:\TestFolder\test.log")
    
  2. Définissez la TextFieldType propriété en tant que FixedWidth, définissant la largeur et le format. Le code suivant définit les colonnes de texte ; le premier est de 5 caractères larges, le deuxième 10, le troisième 11 et le quatrième est de largeur variable.

    Reader.TextFieldType =
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Effectuez une boucle dans les champs du fichier. Si des lignes sont endommagées, signalez une erreur et poursuivez l’analyse.

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

        End While
    End Using
    

Exemple :

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

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é est affectée au 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