lua檔案讀寫

2021-09-06 13:33:55 字數 2849 閱讀 8491

lua裡的檔案讀寫模型來自c語言,分為完整模型(和c一樣)、簡單模型。

1、簡單模型

io.input([file])設定預設的輸入檔案,file為檔名(此時會以文字讀入)或檔案控制代碼(可以理解為把柄,有了把柄就可以找到檔案),返回檔案控制代碼。

io.output([file])設定預設的輸出檔案,引數意義同上。

io.close([file])關閉檔案,不帶引數關閉預設的檔案

io.read(formats)讀入預設檔案,formats取值為"*a"(讀入全部)、「*n」(按數字讀入)、 "*l"(按行讀入,預設方式)、n(即數字,讀取n個字元)。

io.lines([fn])fn檔名,若無檔案,取預設檔案,返回乙個迭代器,可以用在for迴圈裡。

io.write(value)向預設檔案寫入內容。

io.flush()把檔案快取裡的操作立即作用到預設輸出檔案。

例子在最後。

2、完整模型

簡單模型裡只能處理文字型別的檔案,在完整模型裡可以處理二進位制檔案。

處理檔案的一般流程為:開啟檔案,獲取檔案的控制代碼;以檔案控制代碼操作檔案;關閉檔案。

可以看到完整模型比簡單模型複雜點,但優點是功能更強大。

io.open (fn [, m])開啟檔案,返回檔案控制代碼,fn檔名,m模式有:

r以唯讀方式開啟檔案,該檔案必須存在。

w開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

a以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

r+以可讀寫方式開啟檔案,該檔案必須存在。

w+開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a+與a類似,但此檔案可讀可寫

b二進位制模式,如果檔案是二進位制檔案,可以加上b

+號表示對檔案既可以讀也可以寫

以下的file是io.open返回的檔案控制代碼,功能與簡單模式類似,不再詳述。

file :close ()

file :read ( formats )

file :lines ()

file :write ( values )

file :seek ([p] [, of])設定檔案讀寫的偏移,p檔案偏移起始位置(取值有"set",檔案頭,此為預設值,"cur"當前位置、"end"檔案尾),of偏移量(預設值0,正的表示向前,負的表示向後),返回在檔案裡新的當前位置。

file :flush ()

3、示例

--

----------------簡單模型-------------------讀

local file1=io.input("

1.txt

") --

當前目錄"1.txt"要存在,不然出錯

local str=io.read("*a"

)print

(str)--寫

local file2=io.output("

2.txt

") --

當前目錄"2.txt"不需要存在

io.write

(str)

io.flush

()io.close

()--

利用這幾個函式可以做乙個檔案複製的函式

function

copy(filea,fileb)

local file1=io.input

(filea)

ifnot file1 then

print(filea.."

不存在") return

endlocal str=io.read("*a"

) local file2=io.output

(fileb)

io.write

(str)

io.flush

()

io.close

()

endfor line in

io.lines("

1.txt

") do

print

(line)

end--

----------------完整模型-----------------

local f=io.open("

3.txt

","a+")

f:write(""

)f:flush()

f:seek(

"end

",-1) --

定位到檔案末尾前乙個位元組

local str=f:read(1) --

讀取乙個字元

print(str) --

輸出"!"

f:close()

二進位制檔案讀寫,可以參見

love2d教程22--金庸群俠資源格式解析1

love2d教程23--金庸群俠資源格式解析2

lua 讀寫檔案

i o庫為檔案操作提供2個里乙個輸入庫和乙個輸出庫io.read io.write 該函式將所有引數按照順序寫到當前輸出檔案中 file name c 1.txt file name2 function write io.write hello world end write io.read 讀取當...

lua檔案讀寫

檔案讀寫 檔案讀寫對製作遊戲很有幫助。可以呼叫別的檔案中的 儲存最高分 遊戲存檔 玩家狀態等信寫到檔案中。首先,讓我們看乙個簡單的命令 dofile。這個命令會讀入另乙個檔案的 並立即執行。dofile test.lua 很簡單的命令。注意 是指根目錄,不是子目錄。如果是子目錄,應該這樣用 dofi...

lua檔案讀寫

檔案讀寫 檔案讀寫對製作遊戲很有幫助。可以呼叫別的檔案中的 儲存最高分 遊戲存檔 玩家狀態等信寫到檔案中。首先,讓我們看乙個簡單的命令 dofile。這個命令會讀入另乙個檔案的 並立即執行。dofile test.lua 很簡單的命令。注意 是指根目錄,不是子目錄。如果是子目錄,應該這樣用 dofi...