Lire et écrire un fichier sont des tâches basiques nécessaires pour beaucoup de programmes Lua
Lecture d’un fichier
Avec cette forme, nous lisons le fichier dans son intégralité en une seule fois :
|
|
Dans l’exemple suivant, le fichier sera lu ligne par ligne :
|
|
Écriture dans un fichier
L’écriture dans un fichier ressemble beaucoup à ce qui a été mis précédemment :
|
|
Seek
Seek permet de se déplacer dans le fichier. Par exemple, lors de l’ouverture d’un fichier en lecture seule, le curseur est placé automatiquement au début à savoir 0, 0 :
- ligne 0
- colonne 0
Voici un exemple d’utilisation :
|
|
seek() attend 2 paramètres optionnels whence et offset.
- whence peut prendre comme valeur set, cur ou end, cur étant la valeur par défaut
- offset est un entier (voir l’exemple ci-dessus)
seek() peut être utilisé dans n’importe quel mode d’ouverture (voir suite)
Les modes
Modes d’ouvertures d’un fichier
Il en existe plusieurs. Nous avons vu la lecture et l’écriture mais il en existe d’autres :
Mode | Description |
---|---|
“r” | Mode en lecture seule. C’est le mode par défaut si rien n’est indiqué |
“w” | Mode en écriture seule. Écrase les fichiers existants ou crée un nouveau fichier |
“a” | Mode ajout. Ouvre un fichier existant et se place à la fin ou crée un nouveau fichier en mode écriture |
“r+” | Mode en lecture et écriture pour un fichier existant |
“w+” | Si le fichier existe, toutes les données sont supprimées autrement il en crée un nouveau en mode lecture et écriture |
“a+” | Mode ajout avec le mode lecture d’activé qui ouvre un fichier existant ou en crée un nouveau |
Modes de lecture d’un fichier
Au début de cet exemple, nous avons lu l’intégralité d’un fichier avec la commande suivante :
|
|
Cependant, la fonction read() peut prendre d’autres paramètres :
Mode | Description |
---|---|
“*n” | Lit à partir de la position actuelle du fichier et renvoie un numéro, s’il existe, à la position du fichier ou renvoie nil |
“*a” | Lit l’intégralité du fichier à partir de la position du curseur |
“*l” | Lit la ligne à partir de la position du curseur et le place à la prochaine ligne |
nombre | Lit le nombre d’octets (bytes) |
Autres commandes intéressantes
- io.tmpfile() : Retourne un fichier temporaire en lecture et écriture qui sera supprimer une fois que le programme sera terminé
- io.type(nomDuFichier) : Renvoie le fichier, le fichier fermé ou nil en fonction du fichier d’entrée.
- io.flush() : Efface le tampon de sortie par défaut
- io.lines(nomDuFichierFacultatif) : Fournit un générique pour l’itérateur de boucle qui boucle le fichier et le ferme à la fin, au cas où le nom du fichier est fourni ou le fichier par défaut est utilisé et n’est pas fermé à la fin de la boucle (voir exemple en début de chapitre).