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 ...
随机推荐
- linux常用的一些命令(不断增加中)
linux 下重启 apache: httpd -k restart 下面这些大多命令都可以在<鸟哥私房菜>的服务器中的“常用网络指令”和基础中的“程序与资源管理”中找到ps -aux 这 ...
- 得到python某个模块的路径
#-*-coding:utf-8-*- # 导入imp模块 import imp # 打印出MySQLdb模块 print imp.find_module("MySQLdb")
- 《Linux设备驱动程序》 笔记2
驱动代码hello.c #include <linux/init.h> #include <linux/module.h> static int hello_init(void ...
- Strider SSH Deploy配置
登录需要ssh, ssh 免密码登录配置自行百度.shell里写成自己的需要的命令
- openstack neutron
- 2016 CCPC 杭州站 小结
5题倒数第一,铜……(我就知道我们很稳!!!哼!! 这一次心态完全爆炸 开场我就没有按照平时的顺序读题 然后zr的A题wa 我F题T xl说B是一个最小生成树,又说是最小树形图,不会写 K题完全没思路 ...
- (window)Android Studio安装以及Fetching android sdk component information超时的解决方案
转自:http://www.cnblogs.com/sonyi/p/4154797.html 在经过两年的开发之本后,Google 公司终于发布了 Android Studio 1.0,喜欢折腾的童鞋 ...
- MySQL 查看表结构简单命令。
一.简单描述表结构,字段类型 desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键. 二.查询表中列的注释信息 select * from information_ ...
- Memcached 实例
建立Manager类 package com.alisoft.sme.memcached; import java.util.Date; import com.danga.MemCached.MemC ...
- 遇见了这个问题:App.config提示错误“配置系统未能初始化”
解决办法查找之后居然是这样的,受教了,记录一下 解决: "如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元 ...