io - rapid - tags para videos de youtube
Leyendo archivos enteros en lua. (1)
Estoy tratando de leer un archivo mp3 completo para leer las etiquetas id3. Fue entonces cuando noté que el archivo: leer ("* a") aparentemente no lee el archivo completo sino una pequeña parte. Así que intenté crear algún tipo de solución para obtener el contenido de todo el archivo:
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 archivo de prueba, esto muestra que se realizan 256 operaciones de lectura, leyendo un total de ~ 113kB (el archivo completo 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 al leer archivos de gran tamaño basados en texto, como * .oj o * .ase). ¿Existe alguna explicación para este comportamiento o tal vez una solución para leer de manera confiable todo el archivo?
Debo estar perdiendo algo, pero no veo por qué se necesita un bucle. Esto debería funcionar (pero es mejor que agregues el manejo de errores en caso de que el archivo no pueda abrirse):
function readAll(file)
local f = assert(io.open(file, "rb"))
local content = f:read("*all")
f:close()
return content
end