Fonctions d'entrée sortie.
Lua fournit tout une gamme de fonctions d'entrée sortie.
Pour obtenir plus de précisions sur une des fonctions présentes ci-desous, cliquez sur celle de votre choix.
Fermeture de fichier.
io.close( file )
Equivalent à file:close().
Sans file, cette fonction clôt le fichier de sortie par défaut.
io.close()
Vide le fichier.
io.flush()
Equivalent à file:flush() sur le fichier de sortie par défaut.
Définit le fichier d'entrée par défaut.
io.input( file )
Lorsque cette fonction est appelée avec file, elle ouvre le fichier
nommé (en mode texte), et l'utilise comme descripteur d'entrée par défaut.
Lorsque cette fonction est appelée avec un descripteur de fichier, elle
établit simplement ce descripteur de fichier comme le fichier.
Lorsqu'elle est appelée sans paramètres, elle renvoie le descripteur de
fichier d'entrée actuel par défaut.
En cas d'erreur, cette fonction déclenche l'erreur, au lieu de retourner
un code d'erreur.
Lecture ligne par ligne.
io.lines( " nom du fichier " )
Ouvre le fichier "nom du fichier" en lecture et retourne une fonction
d'itération qui, chaque fois qu'elle est appelée, retourne une nouvelle
ligne à partir du fichier.
for line in io.lines( "nom du fichier" ) do ... end
Cette syntaxe parcourt toutes les lignes du fichier.
Lorsque la fonction d'itération détecte la fin du fichier, elle ferme le
fichier et renvoie nil pour terminer la boucle.
Un appel à io.lines(), sans "nom du fichier" est équivalent à
io.input():line() qui parcourt les lignes du fichier d'entrée par défaut.
Ouverture de fichier.
io.open( "nom du fichier", mode )
Cette fonction ouvre un fichier, dans le mode spécifié par mode.
(mode = chaîne de caractère)
Elle retourne un nouveau descripteur de fichier, ou, en cas d'erreur,
nil, plus un message d'erreur.
La chaîne mode est exactement la même que celle qui est utilisée
dans la fonction fopen() du langage C standard et peut avoir une des
valeurs suivantes:
"r" Lecture (par défaut)
"w" Écriture
"a" Ajout
"r+" Mise à jour, toutes les données précédentes sont préservées
"w+" Mise à jour, toutes les données précédentes sont effacées
"a+" Mise à jour, les données précédentes sont conservées, et
l'écriture n'est autorisée qu'à la fin du fichier
La chaîne mode peut avoir un b la fin, ce qui est indispensable pour
ouvrir un fichier en mode binaire.
Définit le fichier de sortie par défaut.
io.output( file )
Comparable à io.input(), mais fonctionne sur le fichier de sortie par
défaut.
Lance un programme dans un processus séparé.
io.popen( prog, mode )
Lance prog dans un processus séparé et renvoie un descripteur de fichier
que vous pouvez utiliser pour lire les données de ce programme, si le
mode est "r", (valeur par défaut) ou d'écrire des données à ce programme
si le mode est "w".
Cette fonction est dépendante du système et n'est pas disponible sur
toutes les plateformes.
Lecture de fichier.
io.read( ··· )
Equivalent à io.input():read(...).
Erreur standard.
stderr est un flux de redirection qui gère un message d'erreur.
Entrée standard.
stdin est un flux de redirection.
stdin est l'entrée standard.
En règle générale, l'entrée standard est connectée au clavier.
Sortie standard.
stdout est un flux de redirection.
stdout est la sortie standard.
En règle générale, la sortie standard est connectée à l'écran.
Ouverture d'un fichier temporaire.
io.tmpfile( )
Retourne un descripteur de fichier temporaire.
Ce fichier est ouvert en mode mise à jour (append) et est automatiquement
supprimé lorsque le programme se termine.
Vérification de descripteur de fichier.
io.type( obj )
Vérifie si obj est un descripteur de fichier valide.
Renvoie la chaîne "file" si obj est un descripteur de fichier ouvert,
"closed file" si obj est un descripteur de fichier fermé, et nil si obj
n'est pas un descripteur de fichier.
Ecrit dans un fichier.
io.write( ··· )
Equivalent à io.output():write.
Fermeture de fichier.
file:close()
Ferme le fichier file.
Enregistre des données écrites.
file:flush()
Enregistre les données écrites sur le fichier file.
Lecture ligne par ligne.
file:lines()
Retourne une fonction d'itération qui, chaque fois qu'elle est appelée,
retourne une nouvelle ligne à partir du fichier file.
Par conséquent, la construction:
for ligne in file:lines() do ... corps ... end
va parcourir toutes les lignes du fichier file.
Mais contrairement io.lines(), cette fonction ne ferme pas le fichier
lorsque la boucle est finie.
Lecture de fichier.
file:read( format1 )
Lit le fichier file, selon les formats de données, qui précisent ce qu'il
faut lire. (format1)
Pour chaque format, la fonction retourne une chaîne (ou un nombre) ainsi
que les caractères lus, ou nil si elle ne peut pas lire de données avec
le format spécifié.
Lorsqu'elle est appelée sans format, elle utilise un format par défaut
qui lit la ligne suivante en entier.
Les formats disponibles sont:
"*n" Lit un nombre, c'est le seul format qui retourne un nombre au lieu
d'une chaîne.
"*a" Lit le fichier en entier, à partir de la position actuelle.
A la fin du fichier, elle retourne une chaîne vide.
"*l" Lit la ligne suivante (en sautant à la fin de ligne), retourne nil
à la fin du fichier. Il s'agit du format par défaut.
number Lit une chaîne avec un nombre maximum de caractères, retourne
nil à la fin du fichier. Si le nombre est égal à zéro, elle ne
lit rien et renvoie une chaîne vide ou nil à la fin du fichier.
local bytes = file:read(4) --> lit le fichier file par blocs de 4 octets
Se positionne sur l'index dans un fichier.
file:seek( whence, offset )
Définit et retourne la position de l'index pour le fichier file, mesurée
à partir du début du fichier, jusqu'à la position donnée par offset en
plus d'une base (start) spécifiée par la chaîne, comme suit:
"set" est la position 0 (début du fichier).
"cur" est la position courante.
"end" est la fin du fichier.
En cas de succès, la fonction retourne la position du fichier, exprimée
en octets depuis le début du fichier.
Si cette fonction échoue, elle retourne nil, en plus d'une chaîne de
caractères décrivant l'erreur.
La valeur par défaut pour whence est "cur", et pour offset est 0.
Par conséquent:
file:seek() retourne la position du fichier en cours, sans le modifier.
file:seek( "set" ) fixe la position au début du fichier et retourne 0.
file:seek( "end" ) fixe la position à la fin du fichier, et retourne sa taille.
Définit le mode de mise en mémoire tampon.
file:setvbuf( mode, size )
Définit le mode de mise en mémoire tampon pour un fichier de sortie.
Il y a trois modes disponibles:
"no" Pas de tampon. Le résultat de toute opération de sortie apparaît
immédiatement.
"full" Mise en mémoire tampon complète. L'opération de sortie est
réalisée uniquement lorsque la mémoire tampon est pleine (ou
lorsque vous videz le fichier explicitement (voir io.flush()).
"line" Mise en mémoire tampon de ligne. La sortie est mise dans le
tampon jusqu'à ce qu'une nouvelle ligne apparaisse ou qu'il y
ait apport de fichiers spéciaux (comme ceux d'un terminal).
Pour les deux derniers cas, size spécifie la taille du tampon en octets.
La valeur par défaut est une taille appropriée.
Ecrire dans un fichier.
file:write( valeur1, ··· )
Écrit la valeur de chacun de ses arguments dans le fichier file.
Les arguments doivent être des chaînes ou des numéros.
Pour écrire d'autres valeurs, utiliser tostring() ou string.format()
avant d'écrire dans le fichier.
En cas de succès, cette fonction retourne file.
Sinon, elle retourne nil, plus une chaîne décrivant l'erreur.