输出操作不能在具有完全缓冲的文件上执行

在缓冲区填满后,此片段不会将长度为90的字符流写入文件

"填满"意味着当缓冲区满时执行输出操作,或者当我们显式刷新文件时执行。通过写出:out:write(string.rep("A ",90))并使用记事本打开文件,我可以看到文本。

此片段不会写入文件

out = io.open("E:\\file","w")
out:setvbuf("full",90)
out:write(string.rep("A",89))
out:write("A")

另一方面,此片段确实写入文件

out = io.open("E:\\file","w")
out:setvbuf("full",90)
out:write(string.rep("A",90))

这可能看起来是一个简单的问题,但实际上令我惊讶的是,第一个片段实际上没有由于这样一个微不足道的变化而写入任何内容。为什么会这样呢? 顺便说一句,我正在使用Lua 5.3.4。

点赞