I am trying to read a full mp3 file in order to read out the id3 tags. That's when I noticed that file:read("*a") apparently does not read the full file but rather a small part. So I tried to build some kind of workaround in order to get the content of the whole file:
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
for my testfile, this shows that 256 reading operations are performed, reading a total of ~113kB (the whole file is ~7MB). Though this should be enough to read most id3 tags, I wonder why Lua behaves in this way (especially because it does not when reading large textbased files such as *.obj or *.ase). Is there any explanation for this behaviour or maybe a solution to reliably read the whole file?
I/O library is used for reading and manipulating files in Lua. There are two kinds of file operations in Lua namely implicit file descriptors and explicit file descriptors.
The file "header. lua" must be somewhere in Lua's search path. This wiki page describes ways of creating modules to load with require . require"header" is the correct form for the default path because require use module names not file names.
“how to print in lua” Code Answer's -- print "Hello, World! print("Hello, World!") x = "Hello, World!"
To delete the file, use os. remove(path) . But close the file first.
I must be missing something but I fail to see why a loop is needed. This should work (but you'd better add error handling in case the file cannot be opened):
function readAll(file) local f = assert(io.open(file, "rb")) local content = f:read("*all") f:close() return content end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With