Lua 文件 I/O

Lua I/O 庫用于讀取和處理文件。分為簡單模式(和C一樣)、完全模式。

簡單模式(simple model)擁有一個當前輸入文件和一個當前輸出文件,并且提供針對這些文件相關(guān)的操作。

完全模式(complete model) 使用外部的文件句柄來實現(xiàn)。它以一種面對對象的形式,將所有的文件操作定義為文件句柄的方法

簡單模式在做一些簡單的文件操作時較為合適。但是在進行一些高級的文件操作的時候,簡單模式就顯得力不從心。例如同時讀取多個文件這樣的操作,使用完全模式則較為合適。

打開文件操作語句如下:

mode 的值有:

簡單模式

簡單模式使用標準的 I/O 或使用一個當前輸入文件和一個當前輸出文件。

以下為 file.lua 文件代碼,操作的文件為test.lua(如果沒有你需要創(chuàng)建該文件),代碼如下:

執(zhí)行以上代碼,你會發(fā)現(xiàn),輸出了 test.ua 文件的第一行信息,并在該文件最后一行添加了 lua 的注釋。如我這邊輸出的是:

在以上實例中我們使用了 io."x" 方法,其中 io.read() 中我們沒有帶參數(shù),參數(shù)可以是下表中的一個:

其他的 io 方法有:

io.tmpfile():返回一個臨時文件句柄,該文件以更新模式打開,程序結(jié)束時自動刪除

io.type(file):檢測obj是否一個可用的文件句柄

io.flush():向文件寫入緩沖中的所有數(shù)據(jù)

io.lines(optional file name):返回一個迭代函數(shù),每次調(diào)用將獲得文件中的一行內(nèi)容,當?shù)轿募矔r,將返回nil,但不關(guān)閉文件


完全模式

通常我們需要在同一時間處理多個文件。我們需要使用 file:function_name 來代替 io.function_name 方法。以下實例演示了如同同時處理同一個文件:

執(zhí)行以上代碼,你會發(fā)現(xiàn),輸出了 test.ua 文件的第一行信息,并在該文件最后一行添加了 lua 的注釋。如我這邊輸出的是:

read 的參數(shù)與簡單模式一致。

其他方法:

file:seek(optional whence, optional offset):設(shè)置和獲取當前文件位置,成功則返回最終的文件位置(按字節(jié)),失敗則返回nil加錯誤信息。參數(shù) whence 值可以是:

"set": 從文件頭開始

"cur": 從當前位置開始[默認]

"end": 從文件尾開始

offset:默認為0

不帶參數(shù)file:seek()則返回當前位置,file:seek("set")則定位到文件頭,file:seek("end")則定位到文件尾并返回文件大小

file:flush():向文件寫入緩沖中的所有數(shù)據(jù)

io.lines(optional file name):打開指定的文件filename為讀模式并返回一個迭代函數(shù),每次調(diào)用將獲得文件中的一行內(nèi)容,當?shù)轿募矔r,將返回nil,并自動關(guān)閉文件。

若不帶參數(shù)時io.lines() <=> io.input():lines(); 讀取默認輸入設(shè)備的內(nèi)容,但結(jié)束時不關(guān)閉文件,如

以下實例使用了 seek 方法,定位到文件倒數(shù)第 25 個位置并使用 read 方法的 *a 參數(shù),即從當期位置(倒數(shù)第 25 個位置)讀取整個文件。

我這邊輸出的結(jié)果是:


內(nèi)容來自:runoob.com 菜鳥教程

整理:極動云,寧波家電物聯(lián)網(wǎng)云平臺

CONTACT US: http://www.iot-jd.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容