首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取Lua中的整个文件

读取Lua中的整个文件
EN

Stack Overflow用户
提问于 2012-04-30 23:56:47
回答 1查看 41.3K关注 0票数 21

为了读出id3标记,我正在尝试读取完整的mp3文件。这时我注意到了这个文件: read (“*a”)显然没有读取整个文件,而是读取了一小部分。因此,我尝试构建某种解决方案,以获取整个文件的内容:

代码语言:javascript
复制
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会这样(特别是因为它在读取*.obj或*.ase等基于文本的大型文件时不会)。对这种行为有什么解释吗?或者可能有一个可靠地读取整个文件的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 01:32:22

我一定是遗漏了什么,但是我不明白为什么需要一个循环。这应该可以工作(但你最好添加错误处理,以防文件无法打开):

代码语言:javascript
复制
function readAll(file)
    local f = assert(io.open(file, "rb"))
    local content = f:read("*all")
    f:close()
    return content
end
票数 63
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10386672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档