2009-01-16 18 views
16

Tengo un programa (escrito en C#) que lee/escribe sus datos directamente (acceso directo a archivos sin servidor) a los archivos de la base de datos de Firebird. Para un mejor intercambio quiero (des) comprimirlos en la importación/exportación para un mejor intercambio a través de Internet sin la necesidad de un programa externo para (des) comprimirlos.Biblioteca de compresión gratuita para C# que admite 7zip (LZMA)

#ziplib que admite Zip, GZip, Tar y BZip2.

¿Qué otras librerías de compresión libre para C# sabes? ¿Hay una biblioteca .NET que admita LZMA para que pueda leer/escribir archivos ".7z"?

Respuesta

20

Hay un buen artículo escrito por Peter Bromberg:

7Zip (LZMA) In-Memory Compression with C#

Muestra una clase simple de C# SevenZip.Compression.Lzma.SevenZipHelper para habilitar la compresión alta de objetos en memoria con C#. Agrega una nueva 7Zip formato LZMA Cookie Compression clase a la utilidad CookieCompression publicada anteriormente.

24

7-zip tiene un código fuente libre, dominio público C# SDK para el algoritmo LZMA:

http://www.7-zip.org/sdk.html

+9

Merece la pena señalar que se trata de código fuente libre, de dominio público, y en C# :) –

+1

@ Jon Skeet: Usted a la derecha Agregó esta información. –

4

Parece ser todo un hecho poco conocido, pero la biblioteca .NET incluye packaging/compression API

+0

Aquí hay un ejemplo que usa esa API: http://www.syntaxwarriors.com/2012/zip-files-using-c-net-without-any-extra-libraries/ – JensB

+0

¿Es este MS específico? Ahora no me gustaría usar una solución solo para MS nunca más. Quiero decir que si empaco un archivo, también espero que se use en máquinas que no sean MS. – tmighty

1

Si está escribiendo archivos individuales, entonces se podría simplemente tratarlo como un arroyo y utilizar el incorporado GZipStream/DeflateStream (aunque en algunas pruebas que hice, #ZipLib superó el ofrecimiento de MS tanto para la relación como para la velocidad). O hay un soporte de cremallera incorporado en algún lugar del marco. Sin embargo, no sé sobre LZMA.

-3

cuidado: GZipStream tiene una limitación de tamaño de 4 Gb

+0

por favor refiérase a http://stackoverflow.com/questions/505190/net-deflatestream-4gb-limit –

Cuestiones relacionadas