Lua 4.0.1 appendto

时间:2016-08-08 15:40:27

标签: io lua

有人可以解释一下使用appendto函数的正确方法吗?

我正在尝试使用它将调试文本写入文件。我希望它在调用函数时立即写入,但由于某种原因,程序会一直等到它退出,然后立即写入所有内容。

我使用的是正确的功能吗?我是否需要打开,然后写入,然后每次写入文件时关闭文件?

感谢。

1 个答案:

答案 0 :(得分:2)

看起来你遇到缓冲问题(这也是其他语言的常见问题,顺便说一句)。您要写入文件的数据保存在内存缓冲区中,并且仅在后期写入磁盘(这样做是为了更好地将批量写入磁盘一起写入)。

一种可能性是按照您的建议打开和关闭文件。关闭文件句柄会将缓冲区的内容刷新到磁盘。

第二种可能性是使用flush函数显式请求将数据写入磁盘。在Lua 4.0.1中,您可以调用flush传递文件句柄

-- If you have opened your file with open:
local myfile = open("myfile.txt", "a")
flush(myfile)

-- If you used appendto the output file handle is in the _OUTPUT global variable
appendto("myfile.txt")
flush(_OUTPUT)

或者你可以在没有参数的情况下调用flush,在这种情况下它会刷新你当前打开的所有文件。

flush()

有关详细信息,请参阅参考手册:http://www.lua.org/manual/4.0/manual.html#6