加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

io – 在Lua中阅读整个文件

发布时间:2020-12-15 00:23:34 所属栏目:大数据 来源:网络整理
导读:我正在读取一个完整的mp3文件,以便读出id3标签。那是当我注意到这个文件:read(“* a”)显然没有读取完整的文件,而是一小部分。所以我试图建立一些解决方法来获取整个文件的内容: function readAll(file) local f = io.open(file,"r") local content = ""
我正在读取一个完整的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读