--打开文件的操作语句: file = io.open(filename [,mode]) 其中mode的取值有以下几种:
--file = io.open(filename,"r") r:以只读方式打开文件,该文件必须存在(默认)
--file = io.open(filename,"w") w:打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件
--file = io.open(filename,"a") a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
--file = io.open(filename,"r+") r+:以可读写方式打开文件,该文件必须存在。
--file = io.open(filename,"w+") w+:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
--file = io.open(filename,"a+") a+:与a类似,但此文件可读可写
-- 当文件打开后,操作文件有以下两种模式
-- 1.使用io表,以io.function 的形式操作文件
-- 2.使用文件句柄,以file:function 的形式操作文件
f1 = io.open("./aaa.lua") --默认以 r 的模式打开文件 等同于 f1 = io.open("./test1.lua","r")
io.input(f1) --将打开的文件写入到缓存
--io.read():文件文件开头,每调用一次读取一行内容 (需要先用io.input(filename)将文件读取到缓存才能用io.read()读取内容)
print(io.read()) --line1:lua I/O test file
print(io.read()) --line2:lua test content
print(io.read()) --line3:lua file content
print(io.read()) --nil 当文件读取完再读取时返回nil
io.close(f1) --关闭打开的文件
f2 = io.open("./aaa.lua","r")
io.output(f2) --将内容从缓存输出到打开的文件
print(io.write("asdf")) --nil Bad file descriptor 当以只读方式打开文件,写入时返回nil及错误信息
io.close(f2)
f3 = io.open("./aaa.lua","w")
io.output(f3) --将内容从缓存输出到打开的文件
print(io.write("line4:从程序中写入内容到文件")) --true 写入成功返回true , 以 w 模式打开文件,在写入时会覆盖旧的文件内容
--io.input(f3)
--print(io.read()) --nil Bad file descriptor 当以只写的方式打开文件,读取时返回nil及错误信息
io.close(f3)
f4 = io.open("./aaa.lua","a")
io.output(f4)
print(io.write("\nline5:从程序写入")) --true 写入成功返回true , 以 a 模式打开文件,在写入时从原有的内容末尾追加写入的内容
io.close(f4)
for l in io.lines("./aaa.lua") do --通过io.lines(filename) 也可以遍历整个文件内容,循环结束后自动关闭文件。
print(l)
end
print("----------------------------------")
--以下是以文件句柄的形式操作文件:
f6 = io.open("./aaa.lua","r+")
--f6:read() 等同于 io.read()
print(f6:read()) --line4:从程序中写入内容到文件
print(f6:read()) --line5:从程序写入
print(f6:read()) --nil
print(f6:write("\nr+的模式下写入内容")) --true 以 r+ 模式打开文件,在写入时追加写入的内容
f6:close()
f7 = io.open("./aaa.lua","w+")
print(f7:read()) -- 以 w+ 打开文件时,会将文件内容清空,所以这里返回 nil
--f7:write 等同于 io.write()
print(f7:write("\nw+ add content1"))
print(f7:write("\nw+ add content2"))
print(f7:write("\nw+ add content3"))
--print(f7:read()) -- 以 w+ 找开文件时,最好不要用f7:read()来读取内容(读到的内容有问题)
f7:close()
f8 = io.open("./aaa.lua","a+")
for l in f8:lines() do --通过 f8:lines() 也可以遍历整个文件内容, 循环结束后不会关闭文件
print(l)
end
print(f8:read()) -- f8没有自动关闭, 所以 还能读取 nil
f8:close()
f9 = io.open("./aaa.lua","r+")
--file:seek(whence,offset): 设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息
--whence可取值: set-从文件头开始 cur-从当前位置开始(默认) end-从文件尾开始
--offset默认0
print(f9:seek()) --0
print(f9:seek("end")) --51 在返回文件位置时,同时也把光标设置到该位置
print(f9:seek("cur")) --51
print(f9:seek("end",-10)) --41
print(f9:seek("set")) --0
print(f9:seek("cur")) --0
print(f9:seek("cur",10)) --10
print(f9:write("12345"))
print(f9:seek("cur")) --15
f9:close()
lua I/O
最新推荐文章于 2020-12-23 16:55:18 发布