Lire un fichier ligne par ligne

Lire un fichier ligne par ligne

Description

Bonjour, Bonsoir

Dans ce tutoriel, je vais vous apprendre comment lire un fichier ligne par ligne.

Ce tutoriel est très simple.

Bon visionnage.

Introduction

Le fichier à lire devra se présenter sous cette forme :

ACTIV = True
EMAIL = xx@live.fr
MDP = azerty
CONNEX_AUTO = True

Les mots en majuscule représentent les futures variables.
Le caractère '=' est un séparateur entre les variables et le texte à enregistrer.

ATTENTION : Il doit y avoir impérativement un espace entre la variable, le séparateur et le texte à enregistrer ==> ACTIV = EMAIL

Pour ce tutoriel, j'ai utilisé un module, à vous de faire votre choix ^^

Tutoriel

Pour commencer, Il vous faut déclarer les variables dans lesquelles seront 'enregistrées' les informations du fichier à lire dans un 'Private Sub'

Module Config_ID
Public ACTIV As Integer 'Déclaration
Public EMAIL As String 'Déclaration
Public MDP As String 'Déclaration
Public CONNEX_AUTO As Integer 'Déclaration
End module

Ensuite, nous allons déclarer deux autres variables : Var et Dat en string.
Puis nous allons faire un 'select case' sur la variable var.
Les cases seront les variables dans lesquelles le texte sera enregistré.
Chaque case devra contenir le nom de la variable déclaré ci-dessus qui englobera la variable Dat.
Il faudra bien entendu écrire tous cela dans un 'Private Sub'

'
Private Sub LoadVar(ByVal Var As String, ByVal Dat As String)
Select Case Var
Case "ACTIV"
ACTIV = Dat
Case "EMAIL"
EMAIL = Dat
Case "MDP"
MDP = Dat
Case "CONNEX_AUTO"
CONNEX_AUTO = Dat
End Select
End Sub

Ensuite, pour la dernière étape, nous allons passer à la lecture du fichier.

Nous allons d'abord déclarer la variable 'Reader' en 'New streamReader' :

'
Dim Reader As New IO.StreamReader("URL DE VOTRE FICHIER")

Nous allons ensuite créer une boucle qui déterminera si la position actuelle du flux se trouve à la fin du flux :

'
While Not Reader.EndOfStream
End while

Puis nous allons déclarer la variable Ligne en string qui englobera le paramètre 'reader.readline' dans la boucle while.
Cette variable servira à lire les lignes de caractères à partir du flux en cours et elle retournera les données sous forme de chaîne :

'
Dim Ligne As String = Reader.ReadLine

Puis nous allons nous écrire une boucle 'if' avec un paramètre 'not'.
Si cette boucle retourne une valeur qui apparait dans la chaîne, alors elle n'en tiendra pas compte et la boucle while continuera de tourner :

'
If Not Ligne.Contains("=") Then Continue While
' le caractère '=' est la valeur qui n'est pas tenue en compte.
If Not Ligne.Contains("#") Then Continue While
' le caractère '#' est la valeur qui n'est pas tenue en compte.

Ensuite, nous allons déclarer la variable 'LigneInfos' en string.
Cette variable retournera un tableau de chaîne qui contient des sous-chaînes.
Puis elle copiera des caractères vers un tableau de caractères Unicode :

'
Dim LigneInfos() As String = Ligne.Split("=".ToCharArray, 2)

Puis nous allons déclarer la variable Var en string qui englobera la variable LigneInfo et qui convertira chaque chaîne en majuscules et supprimera tous les espaces blancs en début ou en fin de chaîne.
Nous allons également procéder de la même manière pour la variable Var à une différence, les chaines ne seront pas convertit en majuscules :

'
Dim Var As String = LigneInfos(0).ToUpper.Trim
Dim Dat As String = LigneInfos(1).Trim

Ensuite nous allons créer une balise 'If'.
Si la variable Dat ne comprend aucun caractère dans ces chaînes alors la boucle While n'en tiendra pas compte et continuera de tourner.

'
If Dat = "" Then Continue While

Et enfin, nous allons retourner tous les résultats obtenus :

'
LoadVar(Var, Dat)

Ceci forme :

'
While Not Reader.EndOfStream
Dim Ligne As String = Reader.ReadLine
' Si pendant la lecture, le programme arrive sur le caractère '=',
'alors il n'en tiendra pas compte
If Not Ligne.Contains("=") Then Continue While
' IDEM sauf que le caractère est #
If Not Ligne.Contains("#") Then Continue While
' le programme ne tiendra pas compte de deux espaces à coté de '='
Dim LigneInfos() As String = Ligne.Split("=".ToCharArray, 2)
Dim Var As String = LigneInfos(0).ToUpper.Trim
Dim Dat As String = LigneInfos(1).Trim
If Dat = "" Then Continue While
LoadVar(Var, Dat)
End While

Pour ensuite arriver à :

'
Module Config_ID
Public ACTIV As Integer 'Déclaration
Public EMAIL As String 'Déclaration
Public MDP As String 'Déclaration
Public CONNEX_AUTO As Integer 'Déclaration
Private Sub LoadVar(ByVal Var As String, ByVal Dat As String)
Select Case Var
Case "ACTIV"
ACTIV = Dat
Case "EMAIL"
EMAIL = Dat
Case "MDP"
MDP = Dat
Case "CONNEX_AUTO"
CONNEX_AUTO = Dat
End Select
End Sub
Public Sub LoadConfig_ID()
Try
Dim Reader As New IO.StreamReader("DATA/CONNEX/Config.SN")
While Not Reader.EndOfStream
Dim Ligne As String = Reader.ReadLine
' Si pendant la lecture, le programme arrive sur le caractère '=',
'alors il n'en tiendra pas compte
If Not Ligne.Contains("=") Then Continue While
' IDEM sauf que le caractère est #
If Not Ligne.Contains("#") Then Continue While
' le programme ne tiendra pas compte de deux espaces à coté de '='
Dim LigneInfos() As String = Ligne.Split("=".ToCharArray, 2)
Dim Var As String = LigneInfos(0).ToUpper.Trim
Dim Dat As String = LigneInfos(1).Trim
If Dat = "" Then Continue While
LoadVar(Var, Dat)
End While
End Sub
End Module

Voila, ce tutoriel s'achève ici.
J'espère en avoir débloqué certains ;')

Bonne soirée.
Jérôme

Ce document intitulé « Lire un fichier ligne par ligne » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
17 Commentaires
Rejoignez-nous