Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31

    trasferimento contenuto file.zip in altro file2.zip

    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 ^_^

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31
    up
    Arciera vi saluta ^_^

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31
    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 ^_^

  4. #4
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    @ 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"

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31
    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 ^_^

  7. #7
    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.
    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.

    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31
    up
    Arciera vi saluta ^_^

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    31

    soluzione parziale

    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 ^_^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.