0Pricing
Lua Academy · Leçon

Lire le contenu de fichiers

Lisez des lignes, des octets et l’intégralité du contenu avec les méthodes file:read().

Lire le contenu de fichiers est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Lire un fichier entier

Utilisez f:read("a") (ou "*a") pour lire le fichier entier dans une chaîne. Cette méthode est simple et convient aux fichiers petits ou moyens. Pour les fichiers très volumineux, lisez-les par blocs ou ligne par ligne afin d’éviter les problèmes de mémoire.

local f = io.open("config.txt", "r")
if f then
  local content = f:read("a")
  f:close()
  print("Size:", #content, "bytes")
  print(content)
end

Lire ligne par ligne

f:read("l") lit la ligne suivante en supprimant le saut de ligne. Renvoie nil à EOF. Utilisez une boucle while pour traiter chaque ligne. f:lines() est la forme abrégée idiomatique qui fait la même chose.

local f = io.open("data.txt", "r")
if f then
  local line = f:read("l")
  while line ~= nil do
    print(line)
    line = f:read("l")
  end
  f:close()
end

-- Equivalent with for loop:
-- for line in io.lines("data.txt") do print(line) end

Lire un nombre fixe d’octets

Transmettez un nombre à f:read(n) pour lire exactement n octets. Renvoie une chaîne contenant au plus n octets (moins si EOF est atteint), ou nil à EOF. Utilisez cette méthode pour les protocoles binaires ou les formats de fichiers structurés.

local f = io.open("binary.dat", "rb")
if f then
  -- Read 4-byte header
  local header = f:read(4)
  if header then
    print("Header bytes:", #header)
    for i = 1, #header do
      io.write(string.format("%02X ", header:byte(i)))
    end
    print()
  end
  f:close()
end

Lire un nombre

f:read("n") lit le nombre suivant dans le fichier en ignorant les espaces. Renvoie un nombre Lua, ou nil si le prochain élément n’est pas un nombre. Cette méthode est utile pour lire des fichiers de données numériques structurées.

-- File contains: "10 20 30.5 40"
local f = io.open("nums.txt", "r")
if f then
  local total = 0
  local n = f:read("n")
  while n do
    total = total + n
    n = f:read("n")
  end
  f:close()
  print("Sum:", total)
end

Se déplacer dans les fichiers

f:seek(whence, offset) déplace la position dans le fichier. whence vaut "set" (depuis le début), "cur" (depuis la position actuelle) ou "end" (depuis la fin). Renvoie la nouvelle position absolue. Utilisez cette méthode pour relire des données ou vous déplacer dans les fichiers.

local f = io.open("test.txt", "r")
if f then
  -- Jump to end, get file size
  local size = f:seek("end")
  print("File size:", size, "bytes")
  
  -- Seek back to start
  f:seek("set", 0)
  local first_line = f:read("l")
  print("First line:", first_line)
  f:close()
end

Lire des fichiers CSV

Analysez les données CSV ligne par ligne : lisez chaque ligne, puis séparez-la par des virgules avec string.gmatch. Pour une utilisation en production, gérez les champs entre guillemets ainsi que les virgules qu’ils contiennent ; pour des données simples, une séparation élémentaire suffit.

local function parseCSV(path)
  local rows = {}
  for line in io.lines(path) do
    local row = {}
    for field in string.gmatch(line, "([^,]+)") do
      row[#row+1] = field
    end
    rows[#rows+1] = row
  end
  return rows
end

-- Example: "Alice,30,Engineer"
-- => {{"Alice","30","Engineer"}}

Lire des fichiers de configuration

Un format de configuration simple avec clé=valeur : lisez le fichier ligne par ligne, ignorez les commentaires et les lignes vides, puis analysez les paires clé=valeur avec string.match.

local function loadConfig(path)
  local cfg = {}
  for line in io.lines(path) do
    -- Skip comments and blank lines
    if not line:match("^%s*#") and line:match("%S") then
      local k, v = line:match("^%s*(%w+)%s*=%s*(.-)%s*$")
      if k then cfg[k] = v end
    end
  end
  return cfg
end

local config = loadConfig("app.conf")
print(config.host, config.port)

Lire par blocs

Pour les fichiers volumineux, lisez des blocs de taille fixe afin d’éviter de tout charger en mémoire. Traitez chaque bloc au fur et à mesure de sa lecture. Cette méthode est essentielle pour les fichiers plus volumineux que la RAM disponible.

local function processLarge(path, chunkSize)
  chunkSize = chunkSize or 4096
  local f, err = io.open(path, "rb")
  if not f then return nil, err end
  local totalBytes = 0
  local chunk = f:read(chunkSize)
  while chunk do
    totalBytes = totalBytes + #chunk
    -- process chunk here
    chunk = f:read(chunkSize)
  end
  f:close()
  return totalBytes
end

Lire plusieurs valeurs par ligne

Lorsque chaque ligne contient plusieurs valeurs séparées par des espaces ou des tabulations, utilisez string.match ou string.gmatch pour les extraire. Ce modèle convient aux fichiers texte structurés simples.

-- File: "Alice 95 A\nBob 87 B"
local results = {}
for line in io.lines("grades.txt") do
  local name, score, grade = line:match("(%S+)%s+(%d+)%s+(%S+)")
  if name then
    results[#results+1] = {
      name=name,
      score=tonumber(score),
      grade=grade
    }
  end
end

for _, r in ipairs(results) do
  print(r.name, r.score, r.grade)
end

Raccourci io.lines

io.lines(filename) ouvre le fichier, renvoie un itérateur de lignes et ferme le fichier une fois la lecture terminée. C’est la manière la plus concise de lire un fichier ligne par ligne sans gérer explicitement sa référence.

-- Count non-empty lines
local count = 0
for line in io.lines("data.txt") do
  if line:match("%S") then
    count = count + 1
  end
end
print("Non-empty lines:", count)

-- Collect all lines into a table
local lines = {}
for line in io.lines("data.txt") do
  lines[#lines+1] = line
end
print("Total lines:", #lines)

Vérification rapide

Que renvoie f:read("a") lorsque le pointeur du fichier se trouve déjà à EOF ?

Récapitulatif : lire des fichiers

Résumé :

  • f:read("a") — le fichier entier sous forme de chaîne
  • f:read("l") — une ligne, sans saut de ligne
  • f:read(n) — exactement n octets
  • f:read("n") — le nombre suivant
  • io.lines(path) — un itérateur de lignes qui ferme automatiquement le fichier
  • f:seek() — se déplacer à une position

Questions Fréquemment Posées

La leçon « Lire le contenu de fichiers » est-elle gratuite ?

Oui — le texte complet de « Lire le contenu de fichiers » 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 « Lire le contenu de fichiers » ?

Lisez des lignes, des octets et l’intégralité du contenu avec les méthodes file:read(). 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 2 sur 4.

Combien de temps prend la leçon « Lire le contenu de fichiers » ?

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

  1. Ouvrir des fichiers avec io.open
  2. Lire le contenu de fichiers
  3. Écrire dans des fichiers et y ajouter du contenu
  4. Fermer des fichiers et gérer les erreurs
← Retour à Lua Academy