J'essaye de lire un fichier mp3 complet afin de lire les tags id3. C'est à ce moment que j'ai remarqué que le fichier: read ("* a") ne semble pas lire le fichier complet mais plutôt une petite partie. J'ai donc essayé de construire une sorte de solution afin d'obtenir le contenu du fichier entier:Lire des fichiers entiers dans 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
pour mon testfile, cela montre que sont effectués 256 opérations de lecture, la lecture d'un total de ~ 113kb (le fichier entier est ~ 7MB). Bien que cela suffise pour lire la plupart des tags id3, je me demande pourquoi Lua se comporte de cette façon (surtout parce qu'il ne le fait pas lors de la lecture de gros fichiers texte tels que * .oj ou * .ase). Y at-il une explication pour ce comportement ou peut-être une solution pour lire de manière fiable l'ensemble du fichier?
Êtes-vous sur Windows? assurez-vous d'ouvrir le fichier en mode binaire ("rb" à io.open) – daurnimator
Argh, c'était le point. Je n'ai jamais eu besoin d'utiliser le mode binaire avant. Merci beaucoup! –
Quelqu'un pourrait-il expliquer le format *** all ** dans la fonction 'f: read (" * all ")'? Il semble que "* all" est égal à "* a"? Je ne pouvais pas trouver le document dans le manuel de lua https://www.lua.org/manual/5.1/manual.html#pdf-file:read –