第一版是针对 Lua 5.0 编写的。虽然在很大程度上仍然适用于后续版本,但存在一些差异。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还将帮助 支持 Lua 项目


21.3 – 对文件的其他操作

tmpfile 函数返回一个临时文件的句柄,以读/写模式打开。当您的程序结束时,该文件会自动删除。flush 函数执行对文件的所有待定写入。与 write 函数类似,您可以将其作为函数 io.flush() 调用,以刷新当前输出文件;或作为方法 f:flush(),以刷新文件 f

seek 函数可用于获取和设置文件的当前位置。其一般形式为 filehandle:seek(whence, offset)whence 参数是一个字符串,用于指定如何解释偏移量。其有效值为 "set"(当偏移量从文件开头解释时);"cur"(当偏移量从文件的当前位置解释时);以及 "end"(当偏移量从文件末尾解释时)。与 whence 的值无关,该调用返回文件的最终当前位置,以从文件开头开始的字节数衡量。

whence 的默认值为 "cur"offset 的默认值为零。因此,调用 file:seek() 返回当前文件位置,而不更改它;调用 file:seek("set") 将位置重置为文件开头(并返回零);调用 file:seek("end") 将位置设置为文件末尾,并返回其大小。以下函数获取文件大小,而不更改其当前位置

    function fsize (file)
      local current = file:seek()      -- get current position
      local size = file:seek("end")    -- get file size
      file:seek("set", current)        -- restore position
      return size
    end

所有前述函数在出现错误时返回 nil 加上错误消息。