前言#
前一章讲解了io.read()
的用法,这一章必然要看io.write()
是怎么用的,因为读写不分家嘛,相比读文件有很多的形式参数,写文件可是要简单多了,就是向文件中写一个字符流,没有众多的参数形式。
内容#
Lua io.write()##
- 原型:io.write(...)
- 解释:将每一个参数写入到文件中(言外之意可以有多个参数),但是参数的类型必须是字符串或者是数字,如果要写入其他类型则需要使用
tostring(arg)
函数或者string.format()
函数,另外这个函数还有一种形式就是file:write()
,而题目中这种形式等价于io.output():write()
。
Usage##
- 首先我们新建一个文件,然后将文件命名为writetest.lua然后编写如下代码:
-- 打开文件
local file = io.open("writetest.txt", "w")
if nil == file then
print("open file writetest.txt fail")
end
-- 输入字符串
file:write("test io.write\n");
-- 输入数字
file:write(2016)
-- 输入分隔符
file:write(" ")
-- 继续输入数字
file:write(7)
file:write(" ")
file:write(23)
file:write("\n")
-- 继续输入其他类型
file:write(tostring(os.date()))
file:write("\n")
file:write(tostring(file))
-- 关闭文件
file:close()
-- 读取文件并显示
local fileread = io.open("writetest.txt", "r")
local content = fileread:read("*a");
print("file content is : \n")
print(content)
fileread:close()
- 运行结果:
总结#
- 这个函数有一定的局限性,就是不能向文件中写入二进制数据,只能写入数字和字符串,而写入数字的时候貌似也是先转化成字符串再写入的,这个在实际应用中需要注意。
- 由示例代码和结果可知,如要换行的话需要自己向文件中写入
"\n"
字符,否则无法实现换行。 - 代码中给出了其他类型转化成字符串的方法,但不是所有的内容都可以转化成字符串(或者说是没有意义的),所以在转化之后需要对即将输入的内容进行检测,查看转化后的内容是否是自己想要的。
网友评论