ciao a tutti!
Mi serve aiuto per un pezzo di codice che mi trasferisca tutti gli
elementi contenuti in un file.zip in un altro file.zip.
A parte l'uso della classe InputStream, in pratica come posso fare?
graz!
ciaociao
ciao a tutti!
Mi serve aiuto per un pezzo di codice che mi trasferisca tutti gli
elementi contenuti in un file.zip in un altro file.zip.
A parte l'uso della classe InputStream, in pratica come posso fare?
graz!
ciaociao
Arciera vi saluta ^_^
up![]()
Arciera vi saluta ^_^
Allora, tanto per farvi vedere che lavoro anche io!!!![]()
Ho scritto questo codice, ma dà l'errore descritto, perchè? Che tipo di errore è?
Premetto che le stringhe sono di questo tipo String src ="temp.zip", forse l'errore è quello? Devo mettere i File src/dst?
public static void copiaConZip(String src, String dst) {
try {
ZipInputStream in = new ZipInputStream(new FileInputStream(src));
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(dst));
ZipEntry entry = in.getNextEntry();
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
System.out.println("sta per copiare davvero");
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.closeEntry();
in.close();
out.close();
}catch (IOException e){
e.printStackTrace();
}
}
java.util.zip.ZipException: no current ZIP entry
at java.util.zip.ZipOutputStream.write(Unknown Source)
at ReadZip.copiaConZip(ReadZip.java:73)
at ReadZip.main(ReadZip.java:40)
Arciera vi saluta ^_^
scusa, ma non ti basterebbe semplicemente "copiare" il file ed "incollarlo" in un altro?
Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare
www.netpolaris.it
@ Shagrat: non è così semplice. tutte le volte che modifichi un file zip, quello che succede davvero è che il file viene ricreato (anche se in background e si può non accorgersene) completamente.
@ Arciera: mi pare che qualche tempo fa (Settimane) si fosse già risposto ad alcuni quesiti sulla manipolazione di file zip in java, con classi per scompattare e ricompattare interamente java.
LA tecnica è fondamentalmente la stessa, tranne che dovrai scompattare l'archivio di destinazione, scompattare nella locazione temporanea i file che vuoi copiare dall'altro zip e ricompattare il tutto. Sul primo e sul terzo passaggio hai già tutto il materiale scritto nei precedenti post. Se ti accontenti di scompattare completamente anche il zip da dove devi recuperare i file da scrivere nell'altro zip, hai proprio tutto. Altrimenti, una volta che hai ottenuto una ZipInputStream ti scorri l'enumeration degli ZipEntry e scompatti solo quelli di tuo interesse.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Grazie Andrea per la risposta!![]()
Il problema è che diventa molto molto macchinoso perchè:
Io devo avere un elenco di file che sono in una directory (e questo già lo ho fatto), devo creare un file temp.zip (ed anche questa è fatta).
Nella directory c'è un file cache.zip con delle cose dentro: devo copiare tutto il suo contenuto in temp.zip.
Poi devo prendere tutti i file .zip che sono nella directory e copiarli in temp.zip (se scompattassi il cache.zip nella directory è probabile che avrei dei doppioni di file uguali), quindi eliminarli dalla directory e poi rinominare il temp.
Allora: dovrei creare un file temporaneo nel quale copiare i file contenuti in cache.zip (cioè creare una directory nuova), scompattare il temp.zip (anche se è un file nuovo e vuoto?boh...) ricompattarlo con i file della directory nuova, poi riscompattarlo per ricompattarlo con i file contenuti nella directory principale...
Mi sembra molto macchinoso, ma forse sono io che non lo vedo bene....![]()
che dici?![]()
Arciera vi saluta ^_^
So come funziona il compattamento/scompattamento/aggiunta dei file...il fatto è che non avevo letto bene (o avevo capito male) quello che Arciera aveva chiesto.Originariamente inviato da Andrea1979
@ Shagrat: non è così semplice. tutte le volte che modifichi un file zip, quello che succede davvero è che il file viene ricreato (anche se in background e si può non accorgersene) completamente.
@ Arciera: mi pare che qualche tempo fa (Settimane) si fosse già risposto ad alcuni quesiti sulla manipolazione di file zip in java, con classi per scompattare e ricompattare interamente java.
LA tecnica è fondamentalmente la stessa, tranne che dovrai scompattare l'archivio di destinazione, scompattare nella locazione temporanea i file che vuoi copiare dall'altro zip e ricompattare il tutto. Sul primo e sul terzo passaggio hai già tutto il materiale scritto nei precedenti post. Se ti accontenti di scompattare completamente anche il zip da dove devi recuperare i file da scrivere nell'altro zip, hai proprio tutto. Altrimenti, una volta che hai ottenuto una ZipInputStream ti scorri l'enumeration degli ZipEntry e scompatti solo quelli di tuo interesse.
Avevo capito che le serviva creare un file zip "copia" di quello che già aveva, invece ora, rileggendo, mi sembra di capire che le serve "aggiungere" dei file (che stanno in un file zip) in un archivio già esistente (che quindi si presuppone contenere altri file)
Sotto questa nuova luce in effetti il miglior consiglio è proprio quello che ha dato Andrea1979
![]()
Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare
www.netpolaris.it
up![]()
Arciera vi saluta ^_^
Praticamente se poniamo la condizione del while diversa da -1, anzichè >0 , dato che lo è sempre, il codice funziona,ma....in pratica copia il file1.zip all'interno del file2.zip, ossia se apro file2.zip, dentro c'è il file1.zip con tutto il suo contenuto.
Invece io volevo trasferire SOLO il contenuto dentro file2.zip.
Quindi, non mi rimane che la soluzione proposta: scompattare, copiare, ricompattare.
ok.
ciaociao
Arciera vi saluta ^_^