Lua读取写入文件

2,722 阅读1分钟

前言

lua访问文件需要用到io库的open函数,该函数有两个参数,

io.open(fileName,mode)
  • fileName 为文件名字
  • mode为模式字符串,包括
'r'只读
'w'只写
'a'追加到末尾
'b'打开二进制文件

read 和 write

读写主要用到readwrite函数,

  • 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() --关闭