Lua io.write()

作者: AlbertS | 来源:发表于2016-07-24 23:14 被阅读2154次

    前言#

    前一章讲解了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()
    
    • 运行结果:
    io_write.png

    总结#

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

    相关文章

      网友评论

        本文标题:Lua io.write()

        本文链接:https://www.haomeiwen.com/subject/icpbjttx.html