gpt4 book ai didi

io - 在Lua中读取整个文件

转载 作者:行者123 更新时间:2023-12-03 13:09:27 27 4
gpt4 key购买 nike

我正在尝试读取完整的mp3文件,以便读出id3标签。从那时起,我注意到file: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会以这种方式运行(特别是因为在读取大型的基于文本的文件(例如* .obj或* .ase)时它不会这样做)。是否对此行为有任何解释,或者是可靠读取整个文件的解决方案?

最佳答案

我必须丢失一些东西,但看不到为什么需要循环。这应该可以工作(但是最好在无法打开文件的情况下添加错误处理):

function readAll(file)
local f = assert(io.open(file, "rb"))
local content = f:read("*all")
f:close()
return content
end

关于io - 在Lua中读取整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com