Pregunta

Estoy intentando crear un archivo Zip desde .Net que se pueda leer desde el código Java.

He usado SharpZipLib para crear el archivo Zip, pero también si el archivo generado es válido de acuerdo con la función CheckZip de la biblioteca #ZipLib y se puede descomprimir exitosamente a través de WinZip o WinRar, siempre aparece un error al intentar descomprimirlo usando Java. Clase .Utils.Zip en Java.

El problema parece estar en el encabezado incorrecto escrito por SharpZipLib. También publiqué una pregunta en el foro de SharpDevelop pero no obtuve resultados (consulte http://community.sharpdevelop.net/forums/t/8272.aspx para obtener información) pero sin resultado.

¿Alguien tiene un ejemplo de código para comprimir un archivo Zip con .Net y descomprimirlo con la clase Java.Utils.Zip?

Saludos Massimo

¿Fue útil?

Solución

He usado Biblioteca DotNetZip y parece funcionar correctamente.Código típico:

using (ZipFile zipFile = new ZipFile())
{
  zipFile.AddDirectory(sourceFolderPath);
  zipFile.Save(archiveFolderName);
}

Otros consejos

Tuve el mismo problema al crear zips con SharpZipLib (última versión) y extraerlos con java.utils.zip.

Esto es lo que me solucionó el problema.Tuve que forzar la exclusión del uso de zip64:

ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))

s.UseZip64 = UseZip64.Off;

No puedo ayudar con SharpZipLib, pero puedes intentar crear un archivo zip usando Paquete Zip clase Empaquetado System.IO sin utilizar bibliotecas de terceros (requiere .NET 3+).

No desea utilizar la clase ZipPackage en .NET; no es un modelo zip estándar.Bueno, lo es, pero supone una estructura particular en el archivo, con un manifiesto con un nombre conocido, etc.ZipPackage parece haber sido optimizado para documentos de Office y XPS.

Una biblioteca de terceros, como http://www.codeplex.com/DotNetZip, es probablemente una mejor opción si está creando archivos ZIP de uso general y desea una buena interoperabilidad.

DotNetZip crea archivos que son muy interoperables con casi todo, incluido java.utils.zip de Java.Pero tenga cuidado al utilizar funciones que Java no admite, como ZIP64 o Unicode.ZIP64 es útil sólo para archivos muy grandes, que Java no soporta bien en este momento, creo.Java admite Unicode de una manera particular, por lo que si produce un archivo ZIP basado en Unicode con DotNetZip, sólo tiene que seguir algunas reglas y funcionará bien.

Para juzgar si realmente es un archivo ZIP compatible, consulte PKZIP. Especificación del formato de archivo .ZIP.

Por si sirve de algo, no he tenido problemas para usar SharpZipLib para crear archivos ZIP en un dispositivo Windows Mobile y abrirlos con WinZip o la función Carpetas comprimidas incorporadas de Windows XP, y tampoco he tenido problemas para producir archivos ZIP en el escritorio con SharpZipLib y procesarlos con mi propia utilidad de extracción ZIP (básicamente un contenedor de zlib) en el dispositivo móvil.

Tuve un problema similar al descomprimir archivos comprimidos con SharpZipLib en Linux.Creo que lo resolví (bueno, ahora trabajo en Linux y Mac, lo probé), mira la publicación de mi blog: http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top