2011-07-12 11 views
9

Necesito crear archivos zip extendidos (multi-volumen) usando .Net, pero no he podido encontrar una biblioteca que me permita hacerlo..Net biblioteca para archivos zip de volumen dividido?

El archivo ZIP comprimido se divide en varios archivos, que generalmente tienen extensiones como .z00, .z01, etc.

La biblioteca tendría que ser de código abierto o gratuita, porque la usaré para un proyecto de código abierto.

(es un duplicado de this pregunta, pero no hay respuestas allí y no voy para ASP específica de todos modos)

+0

años más tarde, pero sólo para aclarar esta cuestión es sobre Split archivo. Los archivos zip extendidos son algo completamente distinto: los archivos ZIP individuales se dividen en varios volúmenes lógicos (generalmente diseñados en disquetes). La diferencia es que un archivo ZIP dividido utiliza el nombre ".z00 - .z (n - 1)", mientras que en un archivo distribuido todos los archivos comparten el mismo nombre (con la misma extensión ".zip"). –

Respuesta

13

DotNetZip le permite hacer esto. Desde su documentación:

La biblioteca es compatible con contraseñas zip, Unicode, ZIP64, el flujo de entrada y de salida, de cifrado AES, múltiples niveles de compresión, archivos de extracción, abarcó archivos, y mucho más.

+0

+! DotNetZip es genial. –

+1

dotNetZip tiene un número máximo de archivos distribuidos = 99.si desea crear archivos de 15mb (para enviarlos a un correo electrónico) y las cosas comprimidas son> ~ 1.5GB, no tiene suerte. – docesam

+1

Es cierto que DotNetZip tiene un conteo máximo de archivos (segmento) de 99 para archivos divididos, aunque esto parece ser completamente arbitrario. La primera revisión que puedo encontrar (Wikipedia) que especifica un límite es 6.3.0 (2006), que coincide con 6.3.4 (2014) en un límite de archivo de ~ 4 mil millones (http://goo.gl/vh4Sp5 - Sección 8.5. 1). Sin embargo, dado que la biblioteca es de código abierto, al menos podría crear una modificación personalizada de la misma. Con un tamaño de archivo mínimo de 64 K (por especificación ZIP), puede tener aproximadamente 256 TB en un archivo ZIP dividido sin sobrepasar el límite de archivos. –

1

Tome un vistazo a la biblioteca SevenZipSharp. Es compatible con archivos multivolumen.

20

ejemplo DotNetZip:

int segmentsCreated ; 
using (ZipFile zip = new ZipFile()) 
{ 
    zip.UseUnicode= true; // utf-8 
    zip.AddDirectory(@"MyDocuments\ProjectX"); 
    zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G") ; 
    zip.MaxOutputSegmentSize = 100*1024 ; // 100k segments 
    zip.Save("MyFiles.zip"); 

    segmentsCreated = zip.NumberOfSegmentsForMostRecentSave ; 
} 

si segmentsCreated regresa como 5, entonces usted tiene los siguientes archivos, cada uno no más de 100 KB de tamaño.

  • MyFiles.zip
  • MyFiles.z01
  • MyFiles.z02
  • MyFiles.z03
  • MyFiles.z04
+1

+1 para código de ejemplo – Jalal

+0

buen código pero no entiendo esta línea 'zip.MaxOutputSegmentSize = 100 * 1024' ¿qué significa 100 kb? Supongo que intentas decir 1024Byte significa 1KB y 1KB * 100 significa 100 KB ..... ¿estoy en lo correcto? – Mou

+0

@Mou: eso es correcto. –

Cuestiones relacionadas