Lua io.write()

前言#

前一章讲解了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()
  • 运行结果:
Lua io.write()_第1张图片
io_write.png

总结#

  • 这个函数有一定的局限性,就是不能向文件中写入二进制数据,只能写入数字和字符串,而写入数字的时候貌似也是先转化成字符串再写入的,这个在实际应用中需要注意。
  • 由示例代码和结果可知,如要换行的话需要自己向文件中写入"\n"字符,否则无法实现换行。
  • 代码中给出了其他类型转化成字符串的方法,但不是所有的内容都可以转化成字符串(或者说是没有意义的),所以在转化之后需要对即将输入的内容进行检测,查看转化后的内容是否是自己想要的。

你可能感兴趣的:(Lua io.write())