手记

Lua读写文件范例

文件读写

文件读写对制作游戏很有帮助。可以调用别的文件中的代码,保存最高分、游戏存档、玩家状态等信写到文件中。

首先,让我们看一个简单的命令: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()



作者:一位不著名的普通群众
链接:https://www.jianshu.com/p/319c3b2ded9e


0人推荐
随时随地看视频
慕课网APP