Lua使用一个I/O库来读取和处理文件,对文件操作模式分为两种:
简单模式:拥有一个当前的输入文件和输出文件,并提供对这些文件的相关操作,针对一些简单文件操作比较方便
完全模式:使用外部的句柄来实现。它使用一种面向对象的方式,将所有文件操作定义文件句柄的方法,读取多个文件操作是更加合适
简单模式是使用io.function_name, 完全模式使用file:function_name
1、file = io.open(filename[,mode]) --以指定模式打开文件成功则返回文件句柄,失败则返回nil + 错误信息
Mode的值有:
r:以只读方式打开文件,该文件必须存在。
w:打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
a: 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
r+: 以可读写方式打开文件,该文件必须存在。
w+: 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a+: 与a类似,但此文件可读可写
b: 二进制模式,如果文件是二进制文件,可以加上b
+: 号表示对文件既可以读也可以写
2、io.close([file]),file:close() --关闭指定文件
3、io.input([file]) -- 设置默认输入文件file
4、io.output(file) -- 设置默认输出文件file
5、io.write("--test"),file:write("--test") -- 向文件写入数据
6、io.read(),file:read() -- 读取文件内容
read()函数可以添加的参数
“*n”: 读取一个数字并返回它。例:file.read(“*n”)
“*a”: 从当前位置读取整个文件。例:file.read(“*a”)
“*l”(默认): 读取下一行,在文件尾 (EOF) 处返回 nil。例:file.read(“*l”)
number: 返回一个指定字符个数的字符串,或在 EOF 时返回 nil。例:file.read(5)
7、io.tmpfile(),file:tmpfile() --返回一个临时文件句柄,该文件以更新模式打开,程序结束时自动删除
8、io.flush(),file:flush() -- 向文件写入缓冲中的所有数据
9、io.type(file),file:type() -- 检测obj是否一个可用的文件句柄
10、io.lines(optional file name), -- 返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,但不关闭文件
11、file:seek(optional whence, optional offset) -- 设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息。
参数 whence 值可以是:
“set”:从文件头开始
“cur”:从当前位置开始[默认]
“end”:从文件尾开始
offset:默认为0不带参数
file:seek():则返回当前位置,
file:seek(“set”):则定位到文件头,
file:seek(“end”):则定位到文件尾并返回文件大小
12、io.popen(prog[,mode]) -- 打开控制台
例:str = io.popen("ipconfig /all","r")