Estoy tratando de leer un archivo mp3 completo para leer las etiquetas id3. Fue entonces cuando noté que el archivo: read ("* a") aparentemente no lee el archivo completo, sino una pequeña parte. Así que traté de construir algún tipo de solución con el fin de obtener el contenido de todo el archivo:Lectura de archivos completos en Lua
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
para mi testfile, esto demuestra que se llevan a cabo 256 operaciones de lectura, la lectura de un total de ~ 113KB (todo el archivo es ~ 7MB). Aunque esto debería ser suficiente para leer la mayoría de las etiquetas id3, me pregunto por qué Lua se comporta de esta manera (especialmente porque no lo hace cuando lee archivos de texto grandes como * .oj o * .ase). ¿Hay alguna explicación para este comportamiento o tal vez una solución para leer de manera confiable todo el archivo?
¿Estás en windows? asegúrese de abrir el archivo en modo binario ("rb" a io.open) – daurnimator
Argh, ese era el punto. Nunca tuve que usar el modo binario antes. ¡Muchas gracias! –
¿Podría alguien explicar el formato *** all ** en la función 'f: read (" * all ")'? Parece que "* all" es igual a "* a"? No pude encontrar el documento en el manual de lua https://www.lua.org/manual/5.1/manual.html#pdf-file:read –