Partager via


Comment : lire des fichiers texte de largeur fixe dans Visual Basic

Mise à jour : novembre 2007

L'objet TextFieldParser permet d'analyser facilement et efficacement les fichiers texte structurés, tels que les journaux.

La propriété TextFieldType définit s'il s'agit d'un fichier délimité ou d'un fichier dont les champs de texte ont une largeur fixe. Pour spécifier un champ à largeur variable dans un fichier à largeur fixe, affectez à la largeur du champ la valeur -1.

Pour lire un fichier texte à largeur fixe

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

    Using Reader As New _
    Microsoft.VisualBasic.FileIO.TextFieldParser _
    ("C:\TestFolder\test.log")
    
  2. Affectez à la propriété TextFieldType la valeur FixedWidth en définissant la largeur et le format. Le code suivant définit les colonnes de texte. La première a une largeur de 5 caractères, la deuxième de 10, la troisième de 11, tandis que la quatrième a une largeur variable.

    Reader.TextFieldType = _
    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
    Reader.SetFieldWidths(5, 10, 11, -1)
    
  3. Parcourez les champs du fichier. Si des lignes sont endommagées, signalez une erreur 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 blocs While et Using avec End While et End Using.

       End While
    End Using
    

Exemple

Cet exemple lit le 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 ci-dessous peuvent générer une exception :

Voir aussi

Tâches

Comment : lire des fichiers texte délimités par des virgules dans Visual Basic

Comment : lire des fichiers texte avec plusieurs formats dans Visual Basic

Procédure pas à pas : manipulation de fichiers et de répertoires en Visual Basic

Dépannage : lecture et écriture dans des fichiers texte

Dépannage des exceptions : Microsoft.VisualBasic.FileIO.TextFieldParser.MalformedLineException

Concepts

Analyse des fichiers texte avec l'objet TextFieldParser

Référence

TextFieldParser, objet