- 0X3F 文件模型
首先要读取文件,文件模型必须按照可读的模式打开.
file:read()
这个函数每调用一次就会返回file中的一行.
每个文件模型都有lines函数.例如:
f=file:lines()
f是一个可迭代函数,包含file的全部内容.调用f一次会返回一行.它可以直接当作迭代器用于for循环,例如输出file中所有行:
for x in file:lines() do print(x) end
read函数可以接受参数来确定读取的内容.
'n'会让read读取一个数字,返回一个number类型的值.
'a'会让read读取整个文件并返回.
'l'会让read读取的时候,返回的字符串中不包括换行符.
'L'会让read读取的时候,返回的字符串中包含换行符.
文件模型会保存当前读写的字符位置.随着read或者write的调用,这个读写点会自动移动.如果要重新读取某一段内容或者覆盖某一段已经存在的内容,就需要移动读写点.
移动读写点使用函数seek(同样需要从文件模型调用,并且把文件模型本身作为第一个参数传入).
它可以接受两个参数whence和offset.其中whence表示模式,offset时移动量.它以whence为参照移动offset长,并且返回当前读写点距离开头的位置(文件开始处为0).
offset为0表示移动到参照处,offset为负数表示倒退.
whence默认为'cur'.表示参照为当前位置为参照.
还可以选'set'或者'end'.'set'表示开头,'end'表示文件结尾.
offset默认值为0.所以仅仅给出'cur'表示不动,查看当前位置.'set'和'end'分别表示到文件开头,结尾.
io.type函数会告诉你传入的变量是不是可用的文件模型.如果是打开的文件模型则返回字符串'file',如果是关闭的文件模型则返回'closed file'.如果不是文件模型则返回nil.
有时候我们需要一些临时文件保存数据.在程序结束之后这些文件被系统自动回收.
使用io.tmpfile函数会创建一个临时文件,并返回其模型.
你也可以使用os.tmpname创建临时文件并返回其名称,然后用io.open打开,但是不推荐这么用.
- 0X41 动态脚本