Lua程式設計 九)

2021-09-02 05:26:57 字數 1174 閱讀 1238

上文提到的簡單i/o模型對於簡單的需求還算適用,但對於諸如同時讀寫多個檔案等更高階的檔案操作來說就不夠了。

對於這樣的操作,需要用到完整地i/o模型。

用函式io.open來開啟乙個檔案,這個函式有兩個引數,乙個引數是待開啟檔案的檔名,另乙個引數是乙個模式字串,該函式返回對應檔案的流。

在開啟檔案後,可以使用方法read和write從流中讀取和向流中寫入。 i/o庫提供了三個預定義的c語言控制代碼:io.stdin,io.stdout和io。stderr。

除了函式io.read外,還可以用函式io.lines從流中讀取內容,該函式返回乙個可以從流中不斷讀取內容的迭代器。

函式io.tmpfile返回乙個操作臨時檔案的控制代碼,當程式執行結束後,該臨時檔案會被自動移除

函式flush將所有緩衝資料寫入檔案。

函式setvbuf用於設定流的緩衝模式,該函式第乙個引數是乙個字串,第二個引數為可選引數,用於指定緩衝區大小。

函式seek用來獲取和設定檔案的當前位置,f:seek(whence, offset)的形式來呼叫,引數whence是乙個指定如何使用偏移的字串,當引數取值為"set」時,表示相對於檔案開頭的便宜;取值為"curr"時,表示相對於檔案當前位置的偏移;取值為"end"時,表示相對於檔案尾部的偏移。

下面的程式演示了獲取檔案大小的方法

function fsize (file)

local current = file:seek() -- 當前位置

local size = file:seek("end") -- 獲取檔案大小

file:seek("set", current) --恢復當前位置

return size

end

函式os.rename用於檔案重新命名。

os.remove用於移除檔案。

函式os.execute用於執行系統命令,該函式的引數為待執行命令的字串,返回值為命令執行結束後的狀態,第乙個返回值為bool型別,當為true時表示程式執行完成;第二個返回值為字串,當為「exit」時表示程式正常執行結束,為「signal」時表示因訊號而中斷。

--建立目錄

function createdir (dirname)

os.execute("mkdir " .. dirname)

end

Lua程式設計(三)

通過昨天用lua程式語言解決八皇后問題,我對於lua語言的程式編寫有了大致的了解。今天開始了解lua的數值相關概念。在lua5.3中為數值格式提供了兩種選擇 一種為64位的integer型別,另一種則是雙精度的float型別。如果是資源受限的平台,如微控制器等我們可以使用精簡的32位數值格式。lua...

Lua程式設計(四)

字串是用於表示文字的手段。lua語言提供的字串是由一串位元組組成的序列。每個字元用8個位元位來儲存。雖然lua支援用任意一種方法來儲存unicode字串,但是最好在一切可能的情況下優先使用utf 8編碼。需要注意的是lua中的字串是不可變值,不能直接修改字串中的某個字元,僅能通過建立乙個新的字串來達...

Lua程式設計(七)

函式是對語句和表示式進行抽象的主要方式,呼叫函式時應使用一堆圓括號把引數列表括起來,即使不需要引數,也需要一對空括號 lua語言也為物件導向風格的呼叫 object oriented call 提供了冒號操作符。形如 o foo x 意為呼叫物件o的foo方法。乙個函式定義具有乙個函式名 name ...