2010-06-07 8 views
5

Tengo muchos archivos que quiero almacenar en un solo archivo. Mi primer enfoque fue almacenar los archivos en un tarball con gzip. El problema es que tengo que volver a escribir todo el archivo si se agrega un solo archivo. Podría deshacerme de la compresión gzip, pero agregar un archivo aún sería costoso.anexar archivos a un archivo sin leer/reescribir todo el archivo

¿Qué otro formato de archivo sugeriría que permite operaciones de adición rápida?

+0

¿Puede escribir un contenedor usted mismo, o necesita un algoritmo bien conocido para permitir que otras personas/sistemas manejen el archivo de resultados? –

+1

Intento evitar escribir mi propio contenedor. Una de las razones es que las personas deberían poder abrir el archivo, sí. También supongo que escribir mi propio contenedor causa más trabajo y al principio es mucho más problemático. –

Respuesta

2

El ZIP file format fue diseñado para permitir anexiones sin una reescritura total y es omnipresente, incluso en Unix.

+1

La pregunta http://stackoverflow.com/questions/2223434/appending-files-to-a-zip-file-with-java está muy relacionada. No estoy seguro de si hay alguna implementación (Java) que permita añadir sin reescribir en su totalidad. –

2

Los archivos ZIP y TAR (y el antiguo formato AR) permiten agregar archivos sin una reescritura completa. Sin embargo:

  • Las clases de archivo de Java NO son compatibles con este modo de operación.
  • Anexar archivo es probable que genere varias copias de un archivo en el archivo si agrega un archivo existente.
  • Los formatos ZIP y AR tienen un directorio que necesita ser reescrito después de una operación de agregar archivo. Las utilidades estándar toman precauciones al reescribir el directorio, pero es posible, en teoría, que pueda terminar con un archivo con un directorio perdido o dañado si el apéndice falla.
Cuestiones relacionadas