2009-11-13 4 views
10

Ho trovato un paio di librerie (LiteZip e ZipArchive) che consentono di decomprimere i file su iPhone. Ma entrambi richiedono un input come file. Esiste una libreria che consente di decomprimere direttamente NSData contenente i dati archiviati tramite zip senza scriverlo in un file temporaneo?
Ho provato ad adottare le librerie citate sopra per questo, ma senza successo fino ad ora.Decomprimere NSData senza file temporaneo

+1

Perché non si desidera utilizzare un file temporaneo? In che forma vuoi i dati non compressi? Sono alcuni dati zippati effettivi che hai nel tuo NSData? –

+0

Ho un file zip crittografato. Lo decrypt in memoria a NSData e poi voglio decomprimerlo direttamente. – Vladimir

+0

Una volta ho scritto esattamente ciò di cui hai bisogno (ad eccezione del supporto per la crittografia). E 'stato abbastanza facile e realizzato in poche ore. Sfortunatamente, non ho più accesso al codice. Quindi perché non ne scrivi uno da zero (con l'uso di zlib)? Il file ZIP è un formato di file piuttosto semplice. – Codo

risposta

0

Da quello che ho capito, il formato zip memorizza i file separatamente e ogni file memorizzato viene compresso utilizzando un algoritmo di compressione (generalmente è l'algoritmo DEFLATE).

Se siete interessati solo a dati di decompressione che è stato compresso utilizzando l'algoritmo DEFLATE si potrebbe usare questo zlib addition to NSData da Google Toolbox For Mac
Non ha bisogno di file temporanei.

+1

Poiché i file negli archivi zip sono archiviati singolarmente e nella loro gerarchia di cartelle originale, dovrebbe essere possibile estrarre un oggetto NSData semplicemente passando un percorso (relativo alla radice dell'archivio zip), giusto? – avocade

1

In this answer a this question, faccio notare il wiki di CocoaDev category on NSData che aggiunge il supporto zip/unzip a quella classe. Questo ti permetterebbe di farlo interamente in memoria.

+1

Questa categoria aggiunge il supporto gzip/zlib, non il formato zip effettivo (che comunque non può essere decompresso in un singolo oggetto NSData che non può rappresentare la struttura file/directory). –