Sto cercando di leggere un file mp3 completo per leggere i tag ID3. In quel momento ho notato che il file: read ("* a") a quanto pare non legge il file completo ma piuttosto una piccola parte. Così ho cercato di costruire un qualche tipo di soluzione, al fine di ottenere il contenuto di tutto il file:Lettura di interi file in 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
per il mio testfile, questo dimostra che 256 operazioni di lettura vengono eseguite, la lettura di un totale di ~ 113KB (l'intero file è ~ 7 MB). Anche se questo dovrebbe essere sufficiente per leggere la maggior parte dei tag ID3, mi chiedo perché Lua si comporti in questo modo (soprattutto perché non funziona quando legge file di testo di grandi dimensioni come * .oj o * .ase). C'è qualche spiegazione per questo comportamento o forse una soluzione per leggere in modo affidabile l'intero file?
Sei su Windows? assicurati di aprire il file in modalità binaria ("rb" su io.open) – daurnimator
Argh, questo era il punto. Non ho mai dovuto usare la modalità binaria prima. Grazie mille! –
Qualcuno potrebbe spiegare il formato *** tutto ** nella funzione 'f: read (" * all ")'? Sembra che "* all" sia uguale a "* a"? Non sono riuscito a trovare il documento in lua manual https://www.lua.org/manual/5.1/manual.html#pdf-file:read –