Tengo un directorio que contiene varios archivos. Quiero comprimir esta carpeta en un archivo zip o tar.gz. ¿Cómo puedo hacer su trabajo en C#?¿Cómo puedo comprimir un directorio con .NET?
Respuesta
Puede utilizar DotNetZip Library. Tiene funciones bastante ricas y útiles.
EDIT:
string[] MainDirs = Directory.GetDirectories(DirString);
for (int i = 0; i < MainDirs.Length; i++)
{
using (ZipFile zip = new ZipFile())
{
zip.UseUnicodeAsNecessary = true;
zip.AddDirectory(MainDirs[i]);
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.Save(string.Format("test{0}.zip", i));
}
}
Acabo de agregar un código de muestra a la respuesta, espero que no te importe . –
En mi trabajo anterior utilizamos #ziplib.
ver en el uso SharpZipLib. Es compatible con la compresión GZip y ZIP en C#.
Hay un excelente tutorial here que describe lo que necesita hacer para comprimir un directorio con SharpZipLib.
Este es un good discussion que analiza la posibilidad de hacer esto sin bibliotecas de terceros. Creo que deberías echarle un vistazo.
Aquí hay un large repository de ejemplos de códigos que pueden ayudarlo en su trabajo. Buena suerte ...
uso System.IO.Packaging Namespace que se introdujo con .NET Framework 3.5. Decidí usar que uno, porque se basa en las clases base de .NET Framework y no se requiere código de tercera parte que hace saltar el tamaño del código ..
here's otro post sobre Stackoverflow con respecto a esta pregunta
Y here's el espacio de nombres y ZipPackage declaración/explicación @MSDN
esperanza de que ayuda a
cristiano
GZip es parte de Microsoft Framework 2.0 onw ard. Se llama GZipStream en el espacio de nombres System.IO.Compression.
Para comprimir un directorio con esta clase, debe crear una clase serializable (por ejemplo, Directorio) que contiene una colección de Archivos.
La clase Files contendría file-name y file-stream para leer bytes del archivo. Una vez que aplique GZip en el Directorio, leerá los Archivos uno por uno y los escribirá en GZipStream.
Comprobar este enlace: http://www.vwd-cms.com/forum/forums.aspx?topic=18
Otra opción pre-3.5 es usar las utilidades zip de J #. Después de todo, a .Net no le importa en qué idioma se escribió originalmente el código ;-).
los artículos sobre cómo hacer esto:
La pregunta es bastante antiguo y también lo son las respuestas.
La mejor respuesta desde finales de 2012 es: Use .NET 4.5 y las System.IO.Compression
y System.IO.Compression.ZipArchive
clases de espacio de nombres.
Uno de los muchos enlaces que recibe ejemplo si se busca en internet: http://www.codeproject.com/Articles/381661/Creating-Zip-Files-Easily-in-NET
Desde 2014/2015 y siguientes .: Con Roslyn toda la biblioteca de marco fue publicado como código abierto, por lo AFA entenderlo, son libres de extraer el código de las clases 4.5 (ya que no debería ser realmente específico del sistema) y usarlo como una biblioteca para los frameworks .NET anteriores. Tal vez esto le daría algunas ventajas de licencia sobre el uso de otras clases, pero esto debe ser analizado por usted.
- 1. Comprimir un directorio de archivos con PHP
- 2. Cómo comprimir un directorio con libbz2 en C++
- 3. ¿Cómo puedo generar archivos y luego comprimir/comprimir con Heroku?
- 4. Cómo comprimir un directorio en un archivo comprimido programáticamente
- 5. ¿Mejor manera de comprimir archivos en Python (comprimir todo un directorio con un solo comando)?
- 6. Cómo comprimir un búfer con zlib?
- 7. Comando para comprimir un directorio utilizando un directorio específico como root
- 8. Cómo comprimir un texto?
- 9. ¿Puedo comprimir datos en JavaScript?
- 10. Cómo comprimir JSON con PHP?
- 11. Cómo comprimir html con PlayFramework
- 12. Cómo comprimir un HttpWebRequest POST
- 13. ¿Cómo puedo obtener un directorio de un Uri
- 14. ¿Cómo puedo detectar cuando un directorio está montado con inotify?
- 15. Cómo comprimir una instancia de objeto .net usando gzip
- 16. ¿Cómo puedo comprimir el archivo con una estructura de directorios plana utilizando Zipfile en Python?
- 17. Cómo comprimir varios archivos utilizando solo .net api en C#
- 18. Comprimir y descomprimir un Stream con Compression.DeflateStream
- 19. ¿Cómo puedo verificar si existe un directorio?
- 20. Cómo comprimir varios archivos en un solo archivo con Delphi
- 21. ¿Cómo comprimir varios archivos en un zip con PowerShell?
- 22. eliminar la estructura del directorio al comprimir archivos en PHP
- 23. Cómo comprimir archivos de registro con NLog
- 24. ¿Puedo comprimir solicitudes HTTP usando GZIP?
- 25. .NET Process.Start directorio predeterminado?
- 26. gradle: ¿cómo puedo compilar un jar con un directorio lib con otros jarrones?
- 27. Cómo comprimir una cadena?
- 28. ¿Comprimir múltiples archivos JavaScript con YUIcompressor?
- 29. Comprimir jpeg en el servidor con PHP
- 30. Comprimir con Java Descomprimir con PHP
Duplicado: http://stackoverflow.com/questions/384955/best-easiest-way-to-create-zip-archive-in-net –