Foros del Web » Programación para mayores de 30 ;) » Java »

Archivos zip en java

Estas en el tema de Archivos zip en java en el foro de Java en Foros del Web. Muy buenas. Estoy tratanto con un juego que maneja las texturas en un .zip (de bastante peso) y me preguntaba si es posible añadir archivos ...
  #1 (permalink)  
Antiguo 19/08/2010, 08:22
 
Fecha de Ingreso: junio-2008
Ubicación: España
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Archivos zip en java

Muy buenas.

Estoy tratanto con un juego que maneja las texturas en un .zip (de bastante peso) y me preguntaba si es posible añadir archivos al zip desde java sin tocar el resto del zip.

Por ahora solo logro leer el zip original, y con una carpeta intermedia crear el zip con lo añadido.


Gracias.


PD: Alguien conoce algun link en español para conocer mas informacion sobre las entry?
  #2 (permalink)  
Antiguo 19/08/2010, 12:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Archivos zip en java

Con el API estándar de Java no se puede. Pero hay librerías para hacerlo, como ésta: https://truezip.dev.java.net/
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 19/08/2010, 15:40
 
Fecha de Ingreso: junio-2008
Ubicación: España
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Archivos zip en java

Gracias por la respuesta GreenEyed!

Voy a probarlo espero que no haga directamente otro zip virtual, por que necesito añadir archivos con rapidez en un zip bastante pesado.
  #4 (permalink)  
Antiguo 19/08/2010, 19:00
 
Fecha de Ingreso: junio-2008
Ubicación: España
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Archivos zip en java

No doy con la tecla, tambien lo he intentado con la libreria commons compress (clase ZipArchiveOutputStream) y no lo he conseguido.

¿Alguien podria indicarme un codigo de ejemplo? por mas que busco no encuentro nada.
  #5 (permalink)  
Antiguo 20/08/2010, 06:03
 
Fecha de Ingreso: junio-2008
Ubicación: España
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Archivos zip en java

Al final logre acer algo con el TrueZip

import de.schlichtherle.io.File;
public class Main {

public static void main(String[] args) {

File zip = new File ("c:/zip/zip.zip");
File add = new File ("c:/prueba.txt");
add.archiveCopyTo(new File (zip,"prueba.txt"));

}

}

Pero vamos, sigue copiando el zip entero para meter un solo archivo, por lo que sigue siendo inviable para mi. he probado a no crear un nuevo File, si no simplemente pasarle zip, y genera pero no guarda el archivo.

tambien he probado con zip.copyFrom(add) y nada.

dios y en python que es 1 linea... y la que me esta dando esto.

A ver si alguien me hecha una mano.
  #6 (permalink)  
Antiguo 20/08/2010, 09:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Archivos zip en java

La verdad es que la documentación de truezip deja basta que desear y parece que opta por re-escribir el fichero para optimizar el tamaño.
Esta es otra opción http://sevenzipjbind.sourceforge.net/ aunque usa elementos nativos.

Otra opción es que si tan facil es en Python, quizá puedas mirar si en Jython se pueda hacer y llamar desde Java a la instrucción en Jython a través del API de Scripting.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 20/08/2010, 19:52
 
Fecha de Ingreso: junio-2008
Ubicación: España
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Archivos zip en java

GreenEyed muchas gracias por tu tiempo y tus respuesta, me has ayudado mucho.

Pues al final opte por utilizar Jython ya que no encontre otra forma.

No se si a alguien le interesara, pero quien sabe si alguien tiene el mismo problema alguna vez asi que pongo aqui un metodo sencillo (no llevo mucho con java asi que no se si es la forma mas correcta como lo he hecho):

public static void addFileToZip(String zipRoute, String addRoute){
PythonInterpreter py = new PythonInterpreter();

py.exec("import zipfile");
py.exec("z = zipfile.ZipFile('"+zipRoute+"','a')");
py.exec("z.write('"+addRoute+"')");
py.exec("z.close()");

}

funcionar funciona ;)

Etiquetas: zip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:15.