Lua 4.0.1 appendto

请问一下使用 appendto 函数的正确方式是什么?

我想将调试文本写入文件中,并希望在调用函数时立即写入,但出现了一些问题,程序会等待退出后才一次性写入。

我是否使用了正确的函数?每次写入时是否需要打开、写入、然后关闭文件?

谢谢。

点赞
用户90511
用户90511

看起来你遇到了缓冲问题(顺便提一下,这也是其他语言常见的问题)。你想要写入文件的数据被保存在内存缓冲区中,只有在以后才会被写入磁盘(这是为了将写入磁盘的操作一起批处理,提高性能)。

一种可能的解决方法是按照你已经建议的打开和关闭文件。关闭文件句柄会将缓冲区的内容刷新到磁盘。

第二种解决方法是使用 flush 函数显式请求将数据写入磁盘。在 Lua 4.0.1 中,你可以使用文件句柄调用 flush

-- 如果你使用 open 打开文件:
local myfile = open("myfile.txt", "a")
flush(myfile)

-- 如果你使用了 appendto,则输出文件句柄在 _OUTPUT 全局变量中
appendto("myfile.txt")
flush(_OUTPUT)

或者你可以无参数调用 flush,此时会刷新你当前打开的所有文件。

flush()

更多细节请参阅参考手册:http://www.lua.org/manual/4.0/manual.html#6

2016-08-08 16:33:11