lua檔案讀寫

2021-08-07 22:29:01 字數 2344 閱讀 9141

檔案讀寫

檔案讀寫對製作遊戲很有幫助。可以呼叫別的檔案中的**,儲存最高分、遊戲存檔、玩家狀態等信寫到檔案中。

首先,讓我們看乙個簡單的命令:dofile。這個命令會讀入另乙個檔案的**並立即執行。

**:dofile("./test.lua")

很簡單的命令。注意 ./ 是指根目錄,不是子目錄。如果是子目錄,應該這樣用:

**:dofile("./files/test.lua")

那麼,如果我們的檔案 test.lua 包含下述**:

**:playerx = 10 playery = 20 enemyx = 40 enemyy = 50

一旦我們用 dofile 呼叫這個檔案,這些變數將立即得到宣告。檔案不是非得用 lua 字尾,txt 或其他字尾都可以。

從檔案中讀取一行:

假設你有乙個很多行文字的檔案,你想從中讀取一行,並列印到螢幕上。為此我們可以使用 io.open() 命令開啟檔案並讀取。

命令的語法是 io.open(filename, mode)。此處我們將使用 r 作為 mode 的值,意指讀取(read)模式。作為參考,下面是所有可用模式的列表:

引用:r - 讀取模式w - 寫入模式(覆蓋現有內容)

a - 附加模式(附加在現有內容之後)

b - 二進位制模式

r+ - 讀取更新模式(現有資料保留)

w+ - 寫入更新模式(現有資料擦除)

a+ - 附加更新模式(現有資料保留,只在檔案末尾附加)

第一件要做的事情就是開啟檔案並存為乙個變數。看下面。

**:file = io.open("testread.txt", "r")

現在我們的檔案 testread.txt 已開啟並處於讀取模式。接著我們使用 read() 命令讀取檔案中的單行內容存為另乙個變數。

**:ourline = file:read()

這將讀取我們的文字檔案的第一行。下一次我們使用 read() 命令它將讀取第二行。再下一次它會讀取第三行,依此類推。

請注意,此命令前的 file 是我們之前開啟檔案並儲存的變數名,你可以使用任何其他名字。file.read() 還可以使用下列任乙個引數,只要用引號括起來放入括號裡就可以。

引用:*n - 讀取乙個數字並返回它。例:file.read("*n")

*a - 從當前位置讀取整個檔案。例:file.read("*a")

*l - (預設) - 讀取下一行,在檔案尾 (eof) 處返回 nil。例:file.read("*l")

number - 返回乙個指定字元個數的字串,或在 eof 時返回 nil。例:file.read(5)

既然我們已經讀取到所要的那一行,我們需要關閉開啟的檔案,像這樣:

**:file:close()

現在要列印我們的檔案至螢幕我們只要這麼做:

**:screen:print(10,10,ourline,white)

讀取所有行  

要讀取乙個檔案的所有行,你可以在乙個 for 語句中使用上述技巧。請看下述**:

**:y = 10

file = io.open("testread.txt","r")

for line in file:lines() do

y = y + 10

screen:print(100,y,line,white)

endf

ile:close()

這個**設定了乙個起始值 y 用於列印,這樣它可以在螢幕不同的縱座標列印每一行。照例,先開啟檔案。然後是 for 語句,這句**是說檔案的行數有多少下面的**就執行幾次。我們的 y 座標則每次迴圈加上 10 以便列印命令可以列印下一行。

寫入檔案(覆蓋)

寫入檔案的方式大致相同。下面的**將覆蓋任何先前寫入檔案的內容:

**:file = io.open("testread.txt","w")file:write("hello")file:close()

注意,我們這次使用了 w 模式,而不是 r 模式,因為我們是要寫入而不是讀取。我們用 file:write() 寫入括號裡作為引數的、用引號括起來的文字。你也可以用變數替代。如果你使用變數就不要用引號,請看下例:

**:file = io.open("testread.txt","w")mytext = "hello"file:write(mytext)file:close()

寫入檔案(附加)

你可以使用附加模式,這樣就可以在寫入檔案時將新內容附加在已有文字末尾,而不是刪除原來的。做法與上面基本相同,除了模式換成「附加」之外。請看**:

**:file = io.open("testread.txt","a")mytext = "\nhello"file:write(mytext)file:close()

ref:

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檔案讀寫

lua裡的檔案讀寫模型來自c語言,分為完整模型 和c一樣 簡單模型。1 簡單模型 io.input file 設定預設的輸入檔案,file為檔名 此時會以文字讀入 或檔案控制代碼 可以理解為把柄,有了把柄就可以找到檔案 返回檔案控制代碼。io.output file 設定預設的輸出檔案,引數意義同上...