Sto cercando di trovare la posizione della prima intestazione del file Central Directory in un file Zip.Come trovare la posizione della directory centrale in un file zip?
sto leggendo questi: http://en.wikipedia.org/wiki/Zip_(file_format) http://www.pkware.com/documents/casestudies/APPNOTE.TXT
come la vedo io, posso solo eseguire la scansione attraverso i dati Zip, identificare per l'intestazione che tipo di sezione sono a, e poi fare che fino Ho colpito l'intestazione della directory centrale. Ovviamente leggo le Intestazioni File prima e uso la "dimensione compressa" per saltare i dati effettivi, e non for-loop attraverso ogni byte nel file ...
Se faccio così, allora praticamente conosco già tutti i file e le cartelle all'interno del file Zip, nel qual caso non vedo più molto l'uso della Directory Centrale.
A mio avviso, lo scopo della directory centrale è elencare i metadati del file e la posizione dei dati effettivi nel file zip in modo da non dover eseguire la scansione dell'intero file?
Dopo aver letto su fine della registrazione directory centrale, Wikipedia dice:
Questo ordinamento consente un file zip da creare in un solo passaggio, ma è solito decompresso dalla prima lettura la directory centrale al fine.
Come trovo la registrazione di Fine directory centrale facilmente? Abbiamo bisogno di ricordare che può avere un commento di dimensione arbitraria lì, quindi potrei non sapere quanti byte dalla fine del flusso di dati si trova a. Lo scannerò?
P.S. Sto scrivendo un lettore di file zip.
Impossibile avviare la scansione indietro dalla fine (la directory ZIP si trova alla fine del file)? –
Sì, sì, ma è davvero questo il modo in cui dovresti farlo?Scansionare all'indietro per trovare la fine della directory centrale è una possibilità, ma considerando il fatto che ha un campo di commento di dimensioni variabili di 16 bit, è possibile avere circa 65k di commenti che è necessario leggere/analizzare, e se il commento contiene il numero magico in cui la scansione fallirà. I commenti di – Tower
sono sempre vuoti e cosa 64K è oggi? –