Ouvrir des fichiers avec io.open
Ouvrez des fichiers en mode lecture, écriture ou ajout avec io.open.
Ouvrir des fichiers avec io.open est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Syntaxe de io.open
io.open(filename, mode) ouvre un fichier et renvoie un descripteur de fichier, ou nil accompagné d’un message d’erreur en cas d’échec. Modes : "r" lecture (par défaut), "w" écriture (tronque le fichier), "a" ajout, "r+" lecture/écriture, "b" suffixe pour le mode binaire.
local f, err = io.open("test.txt", "w")
if not f then
print("Error:", err)
return
end
f:write("Hello, Lua!\n")
f:close()
print("Written successfully")Mode lecture
Ouvrez le fichier en mode "r" pour lire un fichier existant. Vérifiez toujours la valeur nil : si le fichier n’existe pas, io.open renvoie nil et un message d’erreur. Ne supposez jamais que le fichier est présent.
local f, err = io.open("test.txt", "r")
if not f then
print("Cannot open:", err)
return
end
local content = f:read("*a") -- read all
f:close()
print(content)Modes écriture et ajout
"w" crée le fichier ou le tronque. "a" crée le fichier si nécessaire et ajoute toujours les données à la fin. Utilisez le mode ajout pour les fichiers journaux lorsque vous ne voulez pas perdre le contenu précédent.
-- Write (creates/truncates)
local f = io.open("log.txt", "w")
f:write("Session started\n")
f:close()
-- Append (adds to end)
local g = io.open("log.txt", "a")
g:write("Event: login\n")
g:write("Event: action\n")
g:close()Mode binaire
Ajoutez "b" à n’importe quel mode pour effectuer une lecture ou une écriture binaire. Sous Unix, les modes texte et binaire sont identiques. Sous Windows, le mode texte convertit \n en \r\n ; le mode binaire désactive cette conversion. Utilisez toujours le mode binaire pour les fichiers non textuels.
-- Binary read
local f = io.open("image.png", "rb")
if f then
local header = f:read(8) -- read 8 bytes
f:close()
-- Check PNG magic number: \137PNG\r\n\26\n
print("Read", #header, "bytes")
end
-- Binary write
local g = io.open("out.bin", "wb")
if g then
g:write(string.char(0x89, 0x50, 0x4E, 0x47))
g:close()
endMéthodes des descripteurs de fichiers
Un descripteur de fichier (renvoyé par io.open) possède les méthodes suivantes : f:read(...), f:write(...), f:lines(), f:seek(whence, offset), f:flush(), f:close(). Appelez-les avec la syntaxe utilisant deux-points sur le descripteur.
local f = io.open("data.txt", "w")
f:write("line 1\n")
f:write("line 2\n")
f:write("line 3\n")
f:flush() -- force write to disk
f:close()
local g = io.open("data.txt", "r")
for line in g:lines() do
print(line)
end
g:close()io.input et io.output
io.input(f) définit le fichier d’entrée par défaut ; io.output(f) définit la sortie par défaut. io.read() lit depuis l’entrée actuelle ; io.write() écrit vers la sortie actuelle. L’entrée par défaut est stdin ; la sortie par défaut est stdout.
-- Read from stdin (default input)
local line = io.read() -- reads one line
print("You entered:", line)
-- Set default output to a file
io.output("out.txt")
io.write("This goes to out.txt\n")
io.output(io.stdout) -- restore stdoutVérifier l’existence d’un fichier
Lua ne possède pas de file.exists(), mais vous pouvez utiliser io.open en mode lecture : s’il échoue, le fichier n’existe pas (ou n’est pas accessible). Sur les systèmes POSIX, vous pouvez également utiliser os.execute ou la bibliothèque lfs.
local function fileExists(path)
local f = io.open(path, "r")
if f then f:close(); return true end
return false
end
print(fileExists("test.txt")) -- true/false
print(fileExists("noexist.txt")) -- falseLire avec des modes
f:read() accepte des chaînes de format : "l" ou "*l" lit une ligne (en supprimant le saut de ligne) ; "L" conserve le saut de ligne ; "n" lit un nombre ; "a" ou "*a" lit jusqu’à EOF ; un nombre lit ce nombre d’octets.
local f = io.open("data.txt", "r")
if f then
local line1 = f:read("l") -- first line, no newline
local num = f:read("n") -- next number in file
local rest = f:read("a") -- rest of file
f:close()
print(type(line1), type(num))
endFichiers temporaires
io.tmpfile() ouvre un fichier temporaire en mode lecture/écriture. Le fichier est automatiquement supprimé à la fin du programme ou lorsque sa référence est récupérée par le ramasse-miettes. Utilisez-le pour les traitements intermédiaires sans avoir à gérer de noms de fichiers.
local tmp = io.tmpfile()
tmp:write("temporary data\n")
tmp:write("more data\n")
-- Seek back to start and read
tmp:seek("set", 0)
local content = tmp:read("a")
print(content)
-- File auto-deleted when tmp is collectedParcourir les lignes avec lines()
f:lines() renvoie un itérateur qui lit une ligne à la fois. Il ferme automatiquement le fichier lorsque l’itérateur est épuisé. Cette méthode est économe en mémoire pour les fichiers volumineux : le fichier entier n’est jamais chargé en une seule fois.
local function countLines(path)
local count = 0
local f, err = io.open(path, "r")
if not f then return nil, err end
for _ in f:lines() do
count = count + 1
end
-- f is closed automatically by lines()
return count
end
local n, err = countLines("data.txt")
print("Lines:", n)Vérification rapide
Que fait io.open("file.txt", "a") si le fichier n’existe pas ?
Récapitulatif : io.open
Résumé :
io.open(path, mode)renvoie une référence ou nil+une erreur- Modes :
r w a r+ b - Vérifiez toujours que la référence n’est pas nil avant de l’utiliser
- Appelez
f:close()lorsque vous avez terminé f:lines()permet de parcourir les lignes en économisant la mémoireio.tmpfile()crée des fichiers temporaires supprimés automatiquement
Apprends Lua avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 40
- Leçons
- 159
Questions Fréquemment Posées
La leçon « Ouvrir des fichiers avec io.open » est-elle gratuite ?
Oui — le texte complet de « Ouvrir des fichiers avec io.open » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Ouvrir des fichiers avec io.open » ?
Ouvrez des fichiers en mode lecture, écriture ou ajout avec io.open. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Ouvrir des fichiers avec io.open » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Ouvrir des fichiers avec io.open
- Lire le contenu de fichiers
- Écrire dans des fichiers et y ajouter du contenu
- Fermer des fichiers et gérer les erreurs