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
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")
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)
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
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 :
Une ligne ne peut pas être analysée avec le format spécifié (MalformedLineException). Le message d'exception spécifie la ligne qui provoque l'exception, tandis que la propriété TextFieldParser.ErrorLine est assignée au texte contenu dans la ligne.
Le fichier spécifié n'existe pas (FileNotFoundException).
Une situation de niveau de confiance partiel dans laquelle l'utilisateur n'a pas les autorisations suffisantes pour accéder au fichier. (SecurityException).
Le chemin d'accès est trop long (PathTooLongException
L'utilisateur n'a pas les autorisations suffisantes pour accéder au fichier (UnauthorizedAccessException).
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