lua io操作(一)
最近在做可视化窗口数据配置
使用的lua 语言,免不了IO操作
通过查阅资料,做了如下总结,易于理解
lua里的文件读写模型来自C语言,分为完整模型(和C一样)、简单模型。
1.简单模型
io.input([file]) 设置默认的输入文件,file为文件名(此时会以文本读入)或文件句柄(可以理解为把柄,有了把柄就可以找到文件),返回文件句柄。
io.output([file]) 设置默认的输出文件,参数意义同上。
io.close([file]) 关闭文件,不带参数关闭默认的文件
io.read(formats) 读入默认文件,formats取值为"*a"(读入全部)、“*n”(按数字读入)、 "*l"(按行读入,默认方式)、n(即数字,读取n个字符)。
io.lines([fn]) fn文件名,若无文件,取默认文件,返回一个迭代器,可以用在for循环里。
io.write(value)向默认文件写入内容。
io.flush() 把文件缓存里的操作立即作用到默认输出文件
2. 完整模型
-- r 只读模式打开文件,文件必须存在;
-- w 只写模式打开文件,若,文件存在,清空文件内容,否则自动创建;
-- a 附加只写模式打开文件,若,文件存在,写入数据附加到文件末尾,否则自动创建;
-- r+ 可读写模式打开文件,文件必须存在;
-- w+ 可读写模式打开文件,若,文件存在,清空文件内容,否则自动创建;
-- a+ 可读写模式打开文件,若,文件存在,写入数据附加到文件末尾,否则自动创建;
-- b 二进制模式,若,文件为二进制编码,需加上b 例 io.open(filename,"rb+")
-- + 可读可写
local file =io.open("mon.txt","r+")
--文件关闭
file:close()
--读文件数据
file:read(formats) formats取值为"*a"(读入全部)、“*n”(按数字读入)、 "*l"(按行读入,默认方式)、n(即数字,读取n个字符)
-- 逐行读取 一般迭代使用
file:lines()
--文件数据写入
file:write(data)
--设置文件读写的偏移 实现精确定位操作
file :seek ([p] [, of]) p文件偏移起始位置(取值有"set",文件头,此为默认值,"cur"当前位置、"end"文件尾),of偏移量(默认值0,正的表示向前,负的表示向后),返回在文件里新的当前位置
-- 把文件缓存里的操作立即作用到默认输出文件
file :flush ()
------------------简单模型-----------------
--读
local file1=io.input("1.txt") --当前目录"1.txt"要存在,不然出错
local str=io.read("*a")
print(str)
--写
local file2=io.output("2.txt") --当前目录"2.txt"不需要存在
io.write(str)
io.flush()
io.close() --利用这几个函数可以做一个文件复制的函数
function copy(fileA,fileB)
local file1=io.input(fileA)
if not file1 then print(fileA.."不存在") return end
local str=io.read("*a")
local file2=io.output(fileB)
io.write(str)
io.flush()
io.close()
end for line in io.lines("1.txt") do
print(line)
end
------------------完整模型-----------------
local f=io.open("3.txt","a+")
f:write("Happy New Year!")
f:flush() f:seek("end",-1) --定位到文件末尾前一个字节
local str=f:read(1) --读取一个字符
print(str) --输出"!"
f:close() local file = io.open(path.."可视化配置文件读写.ini","w+")
file:write("\["..name.."\]\n")
file:write("maxLv="..value.."\n")
local exp = "1,1000,2,3000,3,4000,"
file:write("exp="..exp.."\n")
local attriStr = "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,"
file:write("attributeValue1="..attriStr.."\n")
file:write("attributeValue2="..attriStr.."\n")
file:write("attributeValue3="..attriStr.."\n")
local skill = "1,1,2,3,4,5,6,7,8,"
file:write("skill1="..skill.."\n")
file:write("skill2="..skill.."\n")
file:write("skill3="..skill.."\n")
local effect = "effect.pak,5,10,100,weaponeffect.wzl,0,"
file:write("effect1="..effect.."\n")
file:write("effect2="..effect.."\n")
file:write("effect3="..effect.."\n")
file:flush()
file:close()
lua io操作(一)的更多相关文章
- python之协程与IO操作
协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- 文件IO操作..修改文件的只读属性
文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改.. 代码如下: /// <summary> /// 创建文 ...
- JAVASE02-Unit08: 文本数据IO操作 、 异常处理
Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...
- JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作
基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...
- IO操作概念。同步、异步、阻塞、非阻塞
“一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作. 同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO. 阻塞IO和非阻塞IO的区别在于第 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- java中的IO操作总结
一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...
- Linux系统编程--文件IO操作
Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...
随机推荐
- java 内存分析之堆栈空间
package Demo; public class Demo { public static void main(String[] args) { Demo demo = new Demo(); ; ...
- 游戏攻略 Re:LieF ~親愛なるあなたへ~ (relief给挚爱的你)
箒木 日向子 反対(賛成) ◆セーブ01 図書館へ向かう ◆セーブ02 日向子 食べてあげない もちろん.おいしかったよ コミュニケーション (汉化版显示为:交流) 日向子END ※回想2個目に追加 ...
- Ubuntu 安装ipython
操作步骤安装ipythonsudo apt-get install ipython 安装ipython[notebook]终端输入以下命令: sudo apt-get install ipython- ...
- 转载:http://www.cnblogs.com/double-K/p/6926367.html
sql专家感悟:不可说的感悟-——十年老技术转型(一) http://www.cnblogs.com/double-K/p/6926367.html
- Fuckey V1.0 Beta版发布!!!
Fuckey,以前叫FullNexus4,只因为当时想做一个软件给自己的Nexus 4,方便方便一下,不过这名字感觉太局限了,毕竟很多朋友不是使用的Nexus 4的手机,但却还是使用了FullNexu ...
- elastic search报错——“failed to obtain node locks”
启动时报错信息: 这里写图片描述 寻找主要信息:failed to obtain node locks这里写图片描述简单理解为:绑定节点失败!!! 百度后,好多人同样遇到了这个问题,导致的原因可能是因 ...
- cxfreeze打包python程序的方法说明(生成安装包,实现桌面快捷方式、删除快捷方式)
一.cxfreeze基础 1.cxfreeze功能 python代码文件转exe方法有三种,分别是cx_freeze,py2exe,PyInstaller,这三种方式各有千秋,本人只用过py2exe和 ...
- Microsoft Teams 版本与语音落地介绍
我亲爱的小伙伴们,失踪人口回归啦~~ 今天和大家聊的是Microsoft Teams,Teams作为协作的集大成者,可以实现skype for Business的所有功能,还可以在teams里集合Of ...
- python3: 字符串和文本(4)
16. 以指定列宽格式化字符串[textwrap] https://docs.python.org/3.6/library/textwrap.html#textwrap.TextWrapper 假如你 ...
- AOP-Pointcut-笔记
一.Pointcut 这是切点的抽象.一个切点由一个的类过滤器和一个方法匹配器组成. 将整个代码贴上来 /** * Core Spring pointcut abstraction. * * < ...