前言
lua访问文件需要用到io库的open函数,该函数有两个参数,
io.open(fileName,mode)
- fileName 为文件名字
- mode为模式字符串,包括
'r'只读
'w'只写
'a'追加到末尾
'b'打开二进制文件
read 和 write
读写主要用到read
和write
函数,
- write函数比较简单,可以读取任意数量的字符串,并将其写入文件
- read较为复杂,后面有个模式字符串,
'a'表示读取文件全部内容,`l`表示读取一行,不带换行符,
'L'读取一行,带换行符,`n`表示读取一个数字,
num 表示读取n个字符。注意num表示数字
实现
在与lua文件同目录的地方创建一个1.txt文件
读
- 以
a
为参数
local f = assert(io.open("1.txt",r)) --打开
local con = f:read("a") --读取
print(con) --输出
f:flush() --刷新
f:close() --关闭
---输出为:
-- 3fff
-- dd
-- gg
-- ca
- 以
L
为参数
local f = assert(io.open("1.txt",r)) --打开
local con = f:read("L") --读取
print(con) --输出
f:flush() --刷新
f:close() --关闭
---输出为:
-- 3fff
- 以
n
为参数
local f = assert(io.open("1.txt",r)) --打开
local con = f:read("n") --读取
print(con) --输出
f:flush() --刷新
f:close() --关闭
---输出为:
-- 3
- 以num为参数
local f = assert(io.open("1.txt",r)) --打开
local con = f:read(2) --读取
print(con) --输出
f:flush() --刷新
f:close() --关闭
---输出为:
-- 3f
写
local f = assert(io.open("2.txt",'w')) --打开
local con = f:write("\nnew content") --写入
f:flush() --刷新
f:close() --关闭
write会覆盖文件之前的内容,所以小心使用,若要写入到文件尾部,可以使用下面的追加方式;而且write写入的文件之前不存在,会创建新的文件;
追加
local f = assert(io.open("1.txt",'a')) --打开
local con = f:write("\nnew content") --写入
f:flush() --刷新
f:close() --关闭