| |
|
Partie 1
Partie 2
Partie 3
Dans cette 2ème partie, nous allons
apprendre à travailler avec des fichiers organisés en lignes
de textes.
Un fichier texte, kézako ?
Généralement, on utilise
le mot 'texte' par opposition à 'binaire'. Un fichier texte, est
composé de lignes de texte (et oui) se terminant par un retour
à la ligne (CRLF). Ces fichiers sont séquenciels, car si
vous voulez lire à 15ème ligne du fichier, il vous faut
lire les 14 précédentes avant d'arriver à la 15ème.
Ces fichiers sont très simple à mettre en oeuvre, mais leur
utilisation est un peu lourde.
Utilisation de l'objet 'File' fourni
par les 'FileSystem Controls'
Pour créer, lire et écrire
des fichiers, nous devons utiliser l'objet 'File' fourni par notre fameux
'FileSystem Controls'. La première chose à faire et d'instancier
un objet de ce type :
Dim wFile As File
Set wFile = CreateObject("FileCtl.File")
La création d'un nouveau fichier
texte
Pour créer un nouveau fichier texte,
il faut effectuer 3 étapes qui sont :
| 1 |
Ouverture du fichier en mode création |
| 2 |
Ecriture de la ou des lignes |
| 3 |
Fermeture du fichier |
Nous allons voir en détail
chaque étape :
Création |
Pour créer un nouveau fichier, il faut utiliser la méthode
'Open' avec les paramètres permettant la création
d'un nouveau fichier en mode texte dans lequel il est possible d'écrire.
Nous allons créer le fichier "\My Documents\Essai.txt"
Call wFile.Open("\My Documents\Essai.txt",
_
fsModeOutput, fsAccessWrite, fsLockReadWrite)
Le premier paramètre est le nom du fichier à ouvrir.
Le second paramètre indique dans quel mode, fsModeOutput
indique qu'il faut ouvrir un fichier texte, le 3ème paramètre
indique que nous allons écrire dans ce fichier. Le 4ème
paramètre détermine ce que les autres programmes ont
le droit de faire pendant que nous travaillons sur le fichier, fsLockReadWrite
indique que les autres programmes ne peuvent ni lire ni écrire
dans ce fichier, autrement dit, il ne peuvent rien faire.
Si il est impossible de créer le fichier (quelle qu'en soit
la raison) une erreur gérable (avec On Error) est générée.
|
Ecriture |
Pour écrire une ligne dans le fichier texte, il faut utiliser
la méthode 'LinePrint' qui prend comme argument le texte
à écrire. Dans notre exemple, nous allons écrire
5 lignes :
Dim i As Integer
For i=1 To 5
Call wFile.LinePrint("Ligne " & i)
Next
|
Fermeture |
Une fois que nous avons terminé avec le fichier, il faut
le fermer, ce qui oblige le système à terminer d'écrire
dans le fichier et le libère aux yeux des autres. Pour fermer
un fichier, il faut utiliser la méthode 'Close' :
Call wFile.Close
|
Ajout de lignes dans un fichier
texte déjà existant
Il est tout à fait possible d'enrichir
un fichier texte déjà existant (un fichier log par exemple).
Pour celà, vous devez lors de l'ouverture stipuler que vous souhaitez
l'ouvrir en mode ajout (append) :
Call wFile.Open("\My Documents\Essai.txt",
_
fsModeAppend, fsAccessWrite, fsLockReadWrite)
Si le fichier n'existe pas encore, il
est créé, sinon, il est ouvert et le pointeur de fichier
est placé à la fin pour y ajouter des lignes.
La lecture d'un fichier texte
Pour lire le contenu d'un fichier texte,
il faut effectuer 3 étapes qui sont :
| 1 |
Ouverture du fichier en mode lecture |
| 2 |
Lecture de la ou des lignes |
| 3 |
Fermeture du fichier |
Nous allons partir du principe que nous
ne savons pas ce que contient le fichier texte et que nous devons lire
la totalité des lignes, sans savoir à l'avance combien il
y en a.
Nous allons voir en détail
chaque étape :
Ouverture |
Pour ouvrir un fichier en lecture, il faut utiliser la méthode
'Open' (comme pour la création) avec le paramètre
de mode à 'fsModeInput' qui indique un mode de lecture texte.
Le paramètre de type d'accès doit être 'fsAccessRead',
et nous allons toujours interdire tout accès de la part des
autres programmes :
Call wFile.Open("\My Documents\Essai.txt",
_
fsModeInput, fsAccessRead, fsLockReadWrite)
Si le fichier n'existe pas, une erreur gérable (avec On
Error) est générée par eVB.
|
Lecture |
La lecture de toutes les lignes d'un fichier texte sans en connaitre
le nombre à l'avance met en scène une propriété
qui retourne True si nous avons lu la dernière ligne et que
nous nous trouvons donc à la fin du fichier. Cette propriété
est 'EOF'.
La lecture d'une ligne proprement dite est effectuée par
la méthode 'LineInputString' qui retourne la ligne en cours
de lecture.
Dans l'exemple suivant, nous allons afficher toutes les lignes
lues dans le fichier :
Dim wLigne As String
Do While Not wFile.EOF
wLigne = wFile.LineInputString
MsgBox wLigne
Loop
|
Fermeture |
Comme toujours, une fois le travail terminé, on ferme le
fichier :
Call wFile.Close
|
Conclusion de cette 2ème partie
Il existe deux autres sortes de fichier
texte, et nous allons apprendre à l'utiliser dans la prochaine
partie.
Stéphane
Sibué
|
|