Latest web development tutorials

Lua Datei-I / O

Lua I / O-Bibliotheken zum Lesen und Verarbeiten von Dateien. Unterteilt in einfachen Mustern (wie C), Vollmodus.

  • Einfach-Modus (einfaches Modell) hat eine aktuelle Eingabedatei und eine aktuelle Ausgabedatei, und bieten für diese dateibezogenen Operationen.
  • Vollmodus (vollständiges Modell) eine externe Datei Griff zu erzielen. Es ist in einem Gesicht in Form eines Objekts, werden alle Dateioperationen wird als Methode der Datei-Handles definiert werden

Im einfachen Modus einige einfache Dateioperationen, wenn mehr angemessen zu tun. Aber nach einiger erweiterte Dateioperation erschien das einfache Modell unzureichend. Zum Beispiel während dieser Vorgang mehrere Dateien zu lesen, verwenden Sie den Vollmodus besser geeignet ist.

Die offene Dateioperation Anweisung lautet wie folgt:

file = io.open (filename [, mode])

Wert Modus sind:

Modus Beschreibung
r Eröffnet schreibgeschützte Datei, muss die Datei existieren.
w Öffnen Sie die Nur-Schreib-Datei, wenn die Datei vorhanden ist, wird die Datei Länge auf 0 gelöscht, das heißt, der Inhalt der Datei verschwinden. Wenn die Datei nicht existiert, erstellen Sie die Datei.
ein In weiteren Nur-Schreib-Datei wird geöffnet. Wenn die Datei nicht existiert, die Einrichtung der Datei, wenn die Datei vorhanden ist, werden die Schreibdaten an das Ende der Datei hinzugefügt werden, werden die Inhalte der ursprünglichen Datei beibehalten werden. (EOF-Zeichen reserviert)
r + Sowohl das Lesen und Schreiben in eine Datei zu öffnen, muss die Datei existieren.
w + Öffnen Sie zum Lesen und Schreiben von Dateien, wenn die Datei vorhanden ist, die Dateilänge von Null klar, dass der Inhalt der Datei verschwinden. Wenn die Datei nicht existiert, erstellen Sie die Datei.
a + Und eine ähnliche, aber diese Datei ist lesbar und beschreibbar
b Binär-Modus, wenn die Datei eine binäre Datei ist, können Sie b hinzufügen
+ Sign zeigt eine Bilddatei kann lesen und schreiben

Simple Mode

Einfach-Modus der Standard-I / O oder verwenden Sie einen aktuellen Input-Datei und eine aktuelle Ausgabedatei verwendet wird.

Im Folgenden ist file.lua Datei Code, Dateioperation test.lua (wenn Sie nicht brauchen, um die Datei zu erstellen), wie folgt:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为 test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为 test.lua
io.output(file)

-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")

-- 关闭打开的文件
io.close(file)

Die Umsetzung des oben genannten Code, werden Sie feststellen, dass die erste Zeile von Informationen test.ua-Datei ausgegeben und die letzte Zeile in der Datei LUA Kommentare hinzufügen. Ich bin hier als Ausgabe lautet:

-- test.lua 文件

In dem obigen Beispiel verwendeten wir io "x", wobei io.read (), wir keine Parameter haben, können Parameter eine der folgenden Tabelle sein:

Modus Beschreibung
"* N" Eine Zahl wird, liest und zurück. Beispiel: file.read ( "* n")
"* A" Lesen Sie die gesamte Datei von ihrem aktuellen Standort. Beispiel: file.read ( "* a")
"* L" (default) Liest die nächste Zeile am Ende der Datei (EOF) auf den Wert nil zurück. Beispiel: file.read ( "* l")
Anzahl Gibt eine bestimmte Anzahl von Zeichen in der Zeichenfolge, oder wenn EOF nil. Beispiel: file.read (5)

Andere io Methoden sind:

  • io.tmpfile (): gibt einen Griff in die temporäre Datei, wird die Datei in den Update - Modus wird automatisch geöffnet , wenn das Programm beendet wird gelöscht

  • io.type (Datei): Erfassen , ob eine OBJ - Datei verarbeitet verfügbar

  • io.flush (): schreiben Sie an die Datei , die alle Datenpuffer

  • io.lines (optional Dateiname): Gibt einen Iterator - Funktion, jeder Aufruf eine Zeile in der Datei erhalten wird, wenn das Ende der Datei, wird es null zurück, sondern schließen Sie die Datei nicht


Vollmodus

Normalerweise müssen wir mit mehreren Dateien gleichzeitig zu behandeln. Wir brauchen die Datei zu verwenden: function_name statt io.function_name Methoden. Das folgende Beispiel zeigt die gleiche Datei zur gleichen Zeit wie:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

Die Umsetzung des oben genannten Code, werden Sie feststellen, dass die erste Zeile von Informationen test.ua-Datei ausgegeben und die letzte Zeile in der Datei LUA Kommentare hinzufügen. Ich bin hier als Ausgabe lautet:

-- test.lua 文件

lesen Parameter im Einklang mit dem einfachen Modus.

Andere Methoden:

  • Datei: suchen (optional woher, optional Offset): einstellen und die aktuelle Dateiposition abzurufen, Erfolg, kehrt die endgültige Dateiposition (in Bytes), schlägt fehl Null plus eine Fehlermeldung zurückgegeben.Woraus Parameterwerte können sein:

    • "Set": Von Anfang der Datei
    • "Cur": von der aktuellen Position [Standard]
    • "Ende": ab Ende der Datei
    • Offset: Der Standardwert ist 0
    Ohne Parameter-Datei: seek () gibt den aktuellen Standort, Datei: suchen ( "set") an die Datei-Header ausgerichtet ist, file: suchen ( "end"), um das Ende der Datei zu suchen und gibt die Dateigröße
  • Datei: flush (): Schreibpuffer alle Daten in die Datei

  • io.lines (optional Dateiname): Öffnen Sie den Modus Dateiname lesen angegeben und gibt einen Iterator - Funktion wird jeder Anruf eine Zeile Datei, wenn das Ende der Datei, wird es Null zurückkehren, und die Datei automatisch schließen.
    Wenn die Bandparameter io.lines () <=> io.input (): Linien (), die Standard-Eingabegerät, um den Inhalt zu lesen, aber das Ende schließen die Datei nicht, wie

    for line in io.lines("main.lua") do
    
      print(line)
    
      end
    

Das folgende Beispiel verwendet Methoden versuchen, die Datei vorletzte Position 25 und verwenden Sie das Leseverfahren zu lokalisieren * ein Parameter, die gesamte Datei von der aktuellen Position zu lesen (die vorletzte Position 25).

-- 以只读方式打开文件
file = io.open("test.lua", "r")

file:seek("end",-25)
print(file:read("*a"))

-- 关闭打开的文件
file:close()

Mein Ergebnis wird sich hier:

st.lua 文件末尾--test