lua I/O

--打开文件的操作语句:	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()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值