CodeS-SourceS
Rechercher un code, un tuto, une réponse

Lire un fichier ligne par ligne

Octobre 2017


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

A voir également

Publié par cs_Jeromedu79.
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.
Startup object :sub main vs maforme
Section de configuration