2010-06-07 28 views
5

Ho molti file che voglio memorizzare in un singolo file di archivio. Il mio primo approccio è stato quello di memorizzare i file in un tarball gzip. Il problema è che devo riscrivere l'intero archivio se viene aggiunto un singolo file. Potrei sbarazzarmi della compressione gzip, ma aggiungere un file sarebbe ancora costoso.aggiungi file a un archivio senza leggere/riscrivere l'intero archivio

Quale altro formato di archivio suggerireste che consente le operazioni di aggiunta rapida?

+0

Sei in grado di scrivere da solo un contenitore o hai bisogno di un algoritmo noto per consentire ad altre persone/sistemi di gestire il file dei risultati? –

+1

Cerco di evitare di scrivere il mio contenitore. Una ragione è che le persone dovrebbero essere in grado di aprire il file, sì. Suppongo anche che scrivere il mio contenitore causi più lavoro e sia inizialmente molto più buggato. –

risposta

2

Il ZIP file format è stato progettato per consentire gli accodamenti senza una riscrittura totale ed è onnipresente, anche su Unix.

+1

La domanda http://stackoverflow.com/questions/2223434/appending-files-to-a-zip-file-with-java è molto correlata. Non sono sicuro che esista alcuna implementazione (Java) che consenta l'aggiunta senza riscrittura totale. –

2

I file ZIP e TAR (e il vecchio formato AR) consentono l'aggiunta di file senza una riscrittura completa. Tuttavia:

  • Le classi di archivio Java NON supportano questa modalità operativa.
  • È probabile che l'aggiunta di file comporti più copie di un file nell'archivio se si aggiunge un file esistente.
  • I formati ZIP e AR hanno una directory che deve essere riscritta dopo un'operazione di aggiunta di un file. Le utilità standard prendono precauzioni quando si riscrive la directory, ma è possibile in teoria che si possa finire con un archivio con una directory mancante o danneggiata se l'aggiunta non riesce.