Lua Academy · Lektion

Dateien mit io.open öffnen

Öffnen Sie Dateien zum Lesen, Schreiben und Anhängen mit io.open

Lektion 1 von 412 Schritte

Dateien mit io.open öffnen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Syntax von io.open

io.open(filename, mode) öffnet eine Datei und gibt ein Dateihandle zurück oder bei einem Fehler nil zusammen mit einer Fehlermeldung. Moduszeichenfolgen: "r" Lesen (Standard), "w" Schreiben (Inhalt leeren), "a" Anhängen, "r+" Lesen/Schreiben, "b" Suffix für Binärdateien.

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")

Lesemodus

Öffnen Sie eine Datei im Modus "r", um eine vorhandene Datei zu lesen. Prüfen Sie immer auf nil – wenn die Datei nicht existiert, gibt io.open nil und eine Fehlermeldung zurück. Gehen Sie niemals davon aus, dass die Datei vorhanden ist.

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)

Schreib- und Anhängemodus

"w" erstellt die Datei oder leert ihren Inhalt. "a" erstellt die Datei bei Bedarf und hängt Daten immer am Ende an. Verwenden Sie den Anhängemodus für Protokolldateien, deren bisheriger Inhalt erhalten bleiben soll.

-- 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()

Binärmodus

Fügen Sie jedem Modus "b" hinzu, um binär zu lesen oder zu schreiben. Unter Unix sind Text- und Binärmodus identisch. Unter Windows wandelt der Textmodus \n in \r\n um; der Binärmodus deaktiviert dies. Verwenden Sie für Dateien, die keine Textdateien sind, immer den Binärmodus.

-- 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()
end

Methoden von Dateihandles

Ein von io.open zurückgegebenes Dateihandle besitzt folgende Methoden: f:read(...), f:write(...), f:lines(), f:seek(whence, offset), f:flush(), f:close(). Rufen Sie sie mit der Doppelpunktsyntax für das Handle auf.

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 und io.output

io.input(f) legt die Standardeingabedatei fest; io.output(f) legt die Standardausgabe fest. io.read() liest aus der aktuellen Eingabe; io.write() schreibt in die aktuelle Ausgabe. Die Standardeingabe ist stdin, die Standardausgabe 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 stdout

Prüfen, ob eine Datei vorhanden ist

Lua verfügt über keine Funktion file.exists(). Sie können jedoch io.open im Lesemodus verwenden – schlägt der Aufruf fehl, existiert die Datei nicht oder ist nicht zugänglich. Alternativ können Sie auf POSIX-Systemen os.execute oder die Bibliothek lfs verwenden.

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"))  -- false

Lesen mit Modi

f:read() akzeptiert Formatzeichenfolgen: "l" oder "*l" liest eine Zeile (entfernt den Zeilenumbruch); "L" behält den Zeilenumbruch bei; "n" liest eine Zahl; "a" oder "*a" liest bis zum Dateiende (EOF); eine Zahl liest diese Anzahl an Bytes.

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))
end

Temporäre Dateien

io.tmpfile() öffnet eine temporäre Datei im Lese-/Schreibmodus. Die Datei wird automatisch gelöscht, wenn das Programm beendet oder der Handle durch die Garbage Collection freigegeben wird. Verwenden Sie dies für die Zwischenverarbeitung, ohne Dateinamen verwalten zu müssen.

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 collected

Zeilenweise Iteration mit lines()

f:lines() gibt einen Iterator zurück, der jeweils eine Zeile liest. Die Datei wird automatisch geschlossen, sobald der Iterator erschöpft ist. Das spart Speicher bei großen Dateien, da nie die gesamte Datei auf einmal geladen wird.

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)

Kurze Verständnisfrage

Was bewirkt io.open("file.txt", "a"), wenn die Datei nicht existiert?

Zusammenfassung: io.open

Zusammenfassung:

  • io.open(path, mode) gibt einen Handle oder nil+Fehler zurück
  • Modi: r w a r+ b
  • Prüfen Sie immer auf nil, bevor Sie den Handle verwenden
  • Rufen Sie nach der Verwendung f:close() auf
  • f:lines() für speichereffiziente zeilenweise Iteration
  • io.tmpfile() für automatisch gelöschte temporäre Dateien
Kostenlos starten

Lerne Lua mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
40
Lektionen
159

Häufig gestellte Fragen

Ist die Lektion „Dateien mit io.open öffnen“ kostenlos?

Ja — der vollständige Text von „Dateien mit io.open öffnen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Dateien mit io.open öffnen“?

Öffnen Sie Dateien zum Lesen, Schreiben und Anhängen mit io.open Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Dateien mit io.open öffnen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Dateien mit io.open öffnen
  2. Dateiinhalte lesen
  3. Dateien schreiben und erweitern
  4. Dateien schließen und Fehler behandeln
← Zurück zu Lua Academy