• 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()
    
      这个代码设置了一个起始值 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 = "
    Hello"file:write(myText)file:close()
  • 相关阅读:
    JMeter参数化及断言的使用
    JMeter基础概念
    postman关联
    postman参数化
    postman发送请求的简单操作
    postman的简单介绍及运用
    javascript小记五则:用JS写一个图片左右自由滚动的“跑马灯”效果
    javascript小记四则:用JS写一个滚动横条文字,可以根据需要进行修改;
    javascript小记三则:ASP.NET启动web调试,窗体自动放大的方法
    JavaScript小记二则:接上一节:用.net写Textbox控件关于数字的判断的另一则方法
  • 原文地址:https://www.cnblogs.com/MarchThree/p/5891228.html
Copyright © 2020-2023  润新知