/ / C'è un modo per ottenere la dimensione del file gzip espanso senza espandersi effettivamente? - rubino, gzip

C'è un modo per ottenere la dimensione del file gzip espansa senza espandersi realmente? - rubino, gzip

Da quando si espande un file gzip di grandi dimensioni richiede abbastanzamolto tempo (a volte più di mezzo minuto), mi piacerebbe conoscere la dimensione espansa prima di iniziare l'espansione (ai fini del rapporto sulla progressione). Esiste un modo per conoscerlo senza espandersi effettivamente?

Aggiornare:

Per file di dimensioni superiori a 4G byte (dimensione espansa),non esiste un modo sicuro di conoscere la dimensione senza espandere il file gzip. Tuttavia, per i file inferiori a 4G byte (dimensione espansa), la dimensione espansa effettiva viene memorizzata come gli ultimi 4 byte del file gzip e può essere recuperata facilmente :

(1..4).inject(0) do |v, i|
v += IO.read(file_name, 1, original_size - i)[0] * (2**8) ** (4 - i)
end

risposte:

2 per risposta № 1

Voglio solo chiudere questa domanda quando ho trovato la soluzione. L'ho aggiornata sopra.


1 per risposta № 2

Non credo che tu possa ottenere una dimensione esatta, come quellarichiederebbe la conoscenza delle frequenze effettive di varie stringhe in un file e non è possibile farlo senza eseguire la scansione del file. È possibile accedere alla funzione di decompressione effettiva e fare in modo che indichi quanto è lungo l'input (rispetto a quanto uscita è)?