W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
I/O庫(kù)為文件操作提供兩種模式。簡(jiǎn)單模式(simple model)擁有一個(gè)當(dāng)前輸入文件和一個(gè)當(dāng)前輸出文件,并且提供針對(duì)這些文件相關(guān)的操作。完全模式(complete model)使用外部的文件句柄來(lái)實(shí)現(xiàn)。
I/O庫(kù)將當(dāng)前輸入文件作為標(biāo)準(zhǔn)輸入(stdin),將當(dāng)前輸出文件作為標(biāo)準(zhǔn)輸出(stdout)。這樣當(dāng)我們執(zhí)行io.read,就是在標(biāo)準(zhǔn)輸入中讀取一行。
寫操作較讀操作簡(jiǎn)單,我們先從寫操作入手。
下面這個(gè)例子里函數(shù)io.write獲取任意數(shù)目的字符串參數(shù),接著將它們寫到當(dāng)前的輸出文件。
local t = io.write("sin (3) = ", math.sin(3), "\n")
--> sin (3) = 0.1411200080598672
print("hello", "Lua"); print("Hi")
-->hello Lua
-->Hi
注:Write函數(shù)與print函數(shù)不同在于,write不附加任何額外的字符到輸出中去,例如制表符,換行符等等。還有write函數(shù)是使用當(dāng)前輸出文件,而print始終使用標(biāo)準(zhǔn)輸出。另外print函數(shù)會(huì)自動(dòng)調(diào)用參數(shù)的tostring方法,所以可以顯示出表(tables)函數(shù)(functions)和nil。
read函數(shù):從當(dāng)前輸入文件讀取串,由它的參數(shù)控制讀取的內(nèi)容:
例子:
--io.read 從標(biāo)準(zhǔn)輸入流中獲得,默認(rèn)設(shè)置下,就是你的屏幕輸入
t = io.read("*all")
t = string.gsub(t, ...) -- do the job
io.write(t) -- write the
提示:若使用luaEditor編輯器,估計(jì)無(wú)法在屏幕輸入。
完全模式的核心在于文件句柄(file handle)。該結(jié)構(gòu)類似于C語(yǔ)言中的文件流(FILE*),其呈現(xiàn)了一個(gè)打開的文件以及當(dāng)前存取位置。打開一個(gè)文件的函數(shù)是io.open。它模仿C語(yǔ)言中的fopen函數(shù),同樣需要打開文件的文件名參數(shù),打開模式的字符串參數(shù):
例子:
--讀操作
file = io.open("testRead.txt", "r")
for line in file:lines() do
print(line)
end
file:close()
--寫操作
file = io.open("testRead.txt","a+")
file:write("\nhello")
file:close()
素材:
內(nèi)容:
運(yùn)行結(jié)果:
文件內(nèi)容:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: