Latest web development tutorials

il file Lua I / O

Lua I / O librerie per i file di lettura e di elaborazione. Diviso in modelli semplici (come il C), modalità completa.

  • Modalità semplice (semplice modello) ha un file di input corrente e un file di output di corrente, e di fornire per queste operazioni relative ai file.
  • Modalità completa (modello completo) utilizzando un handle di file esterno per raggiungere. È in una faccia a forma di un oggetto, i file potrebbero essere definiti come metodo di file handle

In modo semplice di fare alcune operazioni sui file semplici quando più appropriata. Ma dopo qualche operazione di file avanzata, il modello semplice sembrava essere inadeguata. Per esempio durante la lettura di questa operazione più file, utilizzare la modalità completa è più adatto.

La dichiarazione operazione file aperto è il seguente:

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

Modalità di valore sono:

modo descrizione
R Aperto file di sola lettura, il file deve esistere.
w Aprire il file di sola scrittura, se il file esiste, la lunghezza del file viene cancellato a 0, vale a dire, il contenuto del file di spariranno. Se il file non esiste, creare il file.
un Nel file di sola scrittura aggiuntiva viene aperta. Se il file non esiste, la creazione del file, se il file esiste, i dati di scrittura sarà aggiunto alla fine del file, il contenuto del file originale saranno mantenute. (EOF carattere riservato)
r + Lettura e scrittura per aprire un file, il file deve esistere.
w + Aperto a leggere e scrivere file, se il file esiste, la lunghezza del file di azzeramento che il contenuto del file scomparirà. Se il file non esiste, creare il file.
a + E una simile, ma questo file è leggibile e scrivibile
B la modalità binaria, se il file è un file binario, è possibile aggiungere b
+ Segno indica un file può sia leggere e scrivere

Modalità semplice

Modalità semplice utilizzando lo standard di I / O o utilizzare un file di input corrente e un file di output corrente.

Quanto segue è codice del file file.lua, operazione di file test.lua (se non è necessario per creare il file), come segue:

-- 以只读方式打开文件
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)

L'attuazione del codice di cui sopra, si trova che la prima linea di informazioni test.ua file di output e l'ultima riga del file aggiungere lua commenti. Sono qui come output è:

-- test.lua 文件

Nell'esempio sopra abbiamo usato io "x", in cui io.read (), non abbiamo parametri, parametro può essere uno della seguente tabella:

modo descrizione
"* N" Un numero viene letto e restituito. Esempio: file.read ( "* n")
"* A" Leggi l'intero file dalla posizione corrente. Esempio: file.read ( "* a")
"* L" (default) Legge la riga successiva alla fine del file (EOF) a rendimenti zero. Esempio: file.read ( "* L")
numero Restituisce un numero specificato di caratteri della stringa, o quando EOF restituisce zero. Esempio: file.read (5)

Altri metodi sono io:

  • io.tmpfile (): restituisce un handle per il file temporaneo, il file viene aperto in modalità di aggiornamento cancellato automaticamente quando le estremità del programma

  • io.type (file): rilevare se un file obj maniglie disponibili

  • io.flush (): scrivere buffer di tutti i dati nel file

  • io.lines (nome del file opzionale): restituisce una funzione iteratore, ogni chiamata otterrà una riga nel file, quando la fine del file, verrà restituito pari a zero, ma non chiude il file


Full Mode

Di solito abbiamo bisogno di affrontare con più file allo stesso tempo. Abbiamo bisogno di utilizzare il file: nome_funzione invece metodi io.function_name. L'esempio seguente mostra la stessa lima allo stesso tempo come:

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

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

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

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

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

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

L'attuazione del codice di cui sopra, si trova che la prima linea di informazioni test.ua file di output e l'ultima riga del file aggiungere lua commenti. Sono qui come output è:

-- test.lua 文件

leggere i parametri coerenti con la modalità semplice.

Altri metodi:

  • File: seek (donde opzionale, opzionale offset): impostare e recuperare la posizione corrente del file, il successo, restituisce la posizione del file finale (in byte), non riesce più a zero viene restituito un messaggio di errore.valori di parametro Donde possono essere:

    • "Set": Fin dall'inizio del file
    • "Cur": Dalla posizione corrente [default]
    • "End": a partire dalla fine del file
    • offset: Il valore predefinito è 0
    Senza file di parametri: seek () restituisce la posizione corrente, il file: seek ( "set") si rivolge alla intestazione del file, il file: seek ( "end") per individuare la fine del file e restituisce la dimensione del file
  • File: flush (): scrivere buffer di tutti i dati nel file

  • io.lines (nome del file opzionale): aprire il modo di lettura di file nome file specificato e restituisce una funzione iteratore, ogni chiamata archivierà una linea, quando la fine del file, verrà restituito pari a zero, e chiudere automaticamente il file.
    Se i parametri cintura io.lines () <=> io.input (): linee (); il dispositivo di input predefinito per leggere il contenuto, ma alla fine non chiude il file, ad esempio

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

L'esempio seguente utilizza cercare metodi per individuare la posizione del file penultima 25 e utilizzare il metodo di lettura * un parametro, leggere l'intero file dalla posizione corrente (penultima posizione 25).

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

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

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

Il mio risultato è uscita qui:

st.lua 文件末尾--test