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 = "\nHello"file:write(myText)file:close()
Lua读写文件的更多相关文章
- 利用Lua读写本地文件
缘由 今天在使用Lua编写脚本时,需要用到读写文件的操作,很久没有使用Lua了,特写下此文来备忘一下. 简介 Lua对文件的操作与C对文件的操作基本一致,不管是参数还是方法.Lua中可以直接通过全局方 ...
- MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)
Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE ...
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
随机推荐
- APT攻击将向云计算平台聚焦
APT攻击作为一种高效.精确的网络攻击方式,在近几年被频繁用于各种网络攻击事件之中,并迅速成为企业信息安全最大的威胁之一. 近日,飞塔中国首席技术顾问X在谈及APT攻击时表示,随着云计算的不断发展普及 ...
- 第二百二十四天 how can I 坚持
实物商品兑换,有点小难搞,其实也没什么难的,也就那些东西,不过好像这就是我设计实现的,干起来挺来劲的. 供暖了,挺暖和的,哈哈. 小米耳机(炫彩版)到了.感觉挺好的. 还在纠结到底要买哪种颜色的羽绒服 ...
- S3
S3是Amazon EMR的一部分,它提供了一些Wikipedia的浏览统计数据,这些浏览数据的格式便于Spark测试.
- [翻译]创建ASP.NET WebApi RESTful 服务(7)
实现资源分页 本章我们将介绍几种不同的结果集分页方式,实现手工分页,然后将Response通过两个不同的方式进行格式化(通过Response的Envelop元数据或header). 大家都知道一次查询 ...
- hdu 1084 What Is Your Grade?
http://acm.hdu.edu.cn/showproblem.php?pid=1084 What Is Your Grade? Time Limit: 2000/1000 MS (Java/Ot ...
- Swift-CALayer十则示例
作者:Scott Gardner 译者:TurtleFromMars原文:CALayer in iOS with Swift: 10 Examples 如你所知,我们在iOS应用中看到的都是视图( ...
- JQuery与GridView控件结合示例
JQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发. 比如,我们要做一个下面如图所示的功能,效果是状态.编号.数字1. ...
- Educational Codeforces Round 5 E. Sum of Remainders (思维题)
题目链接:http://codeforces.com/problemset/problem/616/E 题意很简单就不说了. 因为n % x = n - n / x * x 所以答案就等于 n * m ...
- JDBC 与 ODBC 区别
一. 二.
- 【转】2D动画:view的Matrix
Matrix,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作. 首先介绍一下矩阵运算.加法和减法就不用说了,太简单了,对应位相加就好.图像处理,主要用到的是乘法 ...