2011-03-19 24 views
11

Necesito crear un archivo zip de mi programa Java.biblioteca de Java para trabajar con archivos Zip

Necesito una biblioteca que sea capaz de crear archivos zip y almacenar entradas de texto y archivo en ella y lo más importante es que necesito poder almacenar todo el directorio en él (Un directorio con varios niveles de otros directorios que cada uno tiene algunos archivos en ellos).

¿Me puede sugerir uno?

Respuesta

9

Una biblioteca para hacer la parte difícil de manejar archivos Zip (es decir, la compresión) se construye la derecha en Java SE (java.util.zip):

http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html

Para sus funciones de nivel superior que no sería que es difícil escribir algunas funciones para recorrer recursivamente un directorio y copiar los archivos en un ZipOutputStream - probablemente menos de 50 líneas de código más o menos.

Hay un buen ejemplo en http://www.javareference.com/jrexamples/viewexample.jsp?id=108 - necesita un poco de trabajo para hacer archivos individuales.

+0

¡Pero java.util.zip no puede guardar un directorio completo y tengo que escribirlo solo! – RYN

+0

cierto, tendría que atravesar la estructura del directorio y volcar cosas en 'ZipOutputStream's usted mismo. – Alnitak

+0

por cierto, ese ejemplo está borked. Tiene algunos problemas principales de compilación (como no iterar correctamente sobre los archivos en el directorio). – stevebot

4

En dichas áreas, generalmente hay algo que considerar de Apache (o, tal vez más específicamente: Apache Commons). Encontré esto: http://commons.apache.org/compress/zip.html (aunque no lo he comprobado).

+0

parece que solo hace que los archivos zip "mejores", no parece incluir el recorrido del directorio o cualquier cosa para hacer la copia de los archivos del disco en el archivo zip. – Alnitak

21

Salida Zip4j - http://www.lingala.net/zip4j/

he encontró con este problema hoy y que se niegan a hacer este tipo de basura bajo nivel que el JDK quiere que hagamos. Esperemos que esta pequeña biblioteca funcionará

+2

Incluso está disponible a través de Maven: http://mvnrepository.com/artifact/net.lingala.zip4j/zip4j – ripper234

3

Hay una unión de Java famosa 7zip biblioteca, puede echarle un vistazo en http://sevenzipjbind.sourceforge.net/

+0

7zip no es lo mismo que zip – Alnitak

+6

Por experiencia personal, el enlace Java de la biblioteca 7zip es capaz de manejar Zip, GZip, RAR y otros formatos, tanto para leer como para escribir. –

4

Otra opción que se puede extraer es ZT-zip disponible en la página central y proyecto Maven en https://github.com/zeroturnaround/zt-zip

Tiene el embalaje estándar y la funcionalidad de desempacar (en los arroyos y el sistema de archivos) + un montón de métodos de ayuda para probar los archivos en un archivo o agregar/eliminar entradas.

+0

Demasiadas dependencias ... pero buen código. – marcolopes

+0

Actualmente la única dependencia es org.slf4j.slf4j-api – toomasr

Cuestiones relacionadas