io – 在Lua中阅读整个文件

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Lua相关文章