Lua中如何完整读取一个文件内容?

更新于
2026-07-26 19:48:50
6阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计374个文字,预计阅读时间需要2分钟。

Lua中如何完整读取一个文件内容?

我正在读取一个完整的MP3文件,以便读取其ID3标签。我发现使用`read(*.a)`自然没有读取完整文件,而只是一小部分。因此,我尝试建立一些解决方案来获取整个文件的内容。

我正在读取一个完整的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)。有没有解释这个行为或可能的解决方案可靠地读取整个文件?

我必须缺少某些东西,但是我不明白为什么需要一个循环。
阅读全文

本文共计374个文字,预计阅读时间需要2分钟。

Lua中如何完整读取一个文件内容?

我正在读取一个完整的MP3文件,以便读取其ID3标签。我发现使用`read(*.a)`自然没有读取完整文件,而只是一小部分。因此,我尝试建立一些解决方案来获取整个文件的内容。

我正在读取一个完整的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)。有没有解释这个行为或可能的解决方案可靠地读取整个文件?

我必须缺少某些东西,但是我不明白为什么需要一个循环。
阅读全文