varios una con comprimir como carpetas carpeta archivos archivo java .net interop zip
ZipPackage

una - comprimir carpetas zip java



Ayuda para crear archivos Zip desde.Net y leerlos desde Java (6)

Estoy tratando de crear un archivo Zip de .Net que se pueda leer desde el código de 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 puedo descomprimirlo con éxito mediante WinZip o WinRar, siempre obtengo un error cuando intento descomprimirlo usando Java Clase .Utils.Zip en Java.

El problema parece estar en el encabezado equivocado escrito por SharpZipLib, también he publicado una pregunta en el foro de SharpDevelop pero sin resultados (ver 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


No se puede ayudar con SharpZipLib, pero puede intentar crear un archivo zip usando la clase ZipPackage System.IO.Packaging sin utilizar bibliotecas de 3ra parte (requiere .NET 3+).


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

Por lo que vale, no tuve problemas para usar SharpZipLib para crear archivos ZIP en un dispositivo con Windows Mobile y abrirlos con WinZip o la característica de Carpetas comprimidas incorporadas de Windows XP, y tampoco tuve problemas para crear archivos ZIP en el escritorio con SharpZipLib y procesarlos con mi propia utilidad de extracción ZIP (básicamente un contenedor alrededor de zlib) en el dispositivo móvil.


No quieres usar la clase ZipPackage en .NET, no es un modelo zip estándar. Bueno, lo es, pero presume una estructura particular en el archivo, con un manifiesto con un nombre conocido, y así sucesivamente. ZipPackage parece haber sido optimizado para documentos de Office y documentos XPS.

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

DotNetZip crea archivos que son muy interoperables con casi todo, incluido el java.utils.zip de Java. Pero tenga cuidado al usar funciones que Java no admite, como ZIP64 o Unicode. ZIP64 es útil solo para archivos muy grandes, lo que creo que Java no admite bien en este momento. Java admite Unicode de una manera particular, por lo que si produces un archivo ZIP basado en Unicode con DotNetZip, solo tienes que seguir unas pocas reglas y funcionará bien.



He utilizado la biblioteca DotNetZip y parece funcionar correctamente. Código típico:

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


Tuve el mismo problema al crear cremalleras con SharpZipLib (última versión) y extraerlas 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;