io – 在Lua中阅读整个文件

我正在读取一个完整的mp3文件,以便读出id3标签。那是当我注意到这个文件:read(“* a”)显然没有读取完整的文件,而是一小部分。所以我试图建立一些解决方法获取整个文件内容
function readAll(file)
    local f = io.open(file,"r")
    local content = ""
    local length = 0

    while f:read(0) ~= "" do
        local current = f:read("*all")

        print(#current,length)
        length = length + #current

        content = content .. current
    end

    return content
end

对于我的测试文件,这表明执行256次读取操作,读取总共约113kB(整个文件大约为7MB)。虽然这应该足以阅读大多数id3标签,但我不知道为什么Lua以这种方式行事(特别是因为它不会读取大的基于文本的文件,例如* .oj或* .ase)。有没有解释这个行为或可能的解决方案可靠地读取整个文件

解决方法

我必须缺少某些东西,但是我不明白为什么需要一个循环。这应该有效(但是如果文件无法打开,最好添加错误处理):
function readAll(file)
    local f = io.open(file,"rb")
    local content = f:read("*all")
    f:close()
    return content
end

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...