Ciao qualcuno di voi ha usato e sa spiegarmi come si usa TrueZIP.
Ho la necessità di dover visualizzare i file all'interno dei archivi per poterli stampare a schermo.
Come posso fare. Riporto sotto il codice che ho tentato di usa che però funziona solo con gli archivi zip...
C'è una classe ArchiveAnalyzer che ha al suo interno una pila contente il percorso e il nome dei file e lancia questi thread (attraverso un thread pool).codice:package mioPack; import java.util.zip.ZipException; import de.schlichtherle.util.zip.*; import de.schlichtherle.io.*; import java.util.Enumeration; import java.io.IOException; public class AnalyzerThread implements Runnable { private ArchiveAnalyzer archAna; public AnalyzerThread(ArchiveAnalyzer archAna){ this.archAna = archAna; } public void run(){ String[] record = archAna.syncPop(); //il metodo syncPop fa il pop di uno stack contenente nel record 1 il percorso locale del file e nel record 0 il nome del file (es: "record[1] = dl/prova/" e "record[0]=prova.zip" quando la pila è finita ritorna "end") while(record[0] != "end"){ try{ File zipFile = new File(record[1]+record[0]); //carico il file in un istanza di file ZipFile file = new ZipFile(zipFile); Enumeration en = file.entries(); //mi faccio ritornare le entries dell'archivio while(en.hasMoreElements()) { ZipEntry entry = (ZipEntry)en.nextElement(); //una per una le casto in una entry String nome = entry.getName(); //Stampo il nome del file solo se non è una directory if(!entry.isDirectory()){ System.out.println(nome); } } }catch(ZipException e){ System.out.println("Errore ZipException nel caricamento del file " + record[0]); } catch(IOException e){ System.out.println("Errore IOException nel caricamento del file " + record[0]); } record = archAna.syncPop(); } } }
Il mio problema è che finchè gli archivi sono degli zip stampa esattamente tutte le entry appena un file diventa un .tar.gz mi lancia questa eccezione: ZipException nel caricamento del file 07esercitazione1.tar.gz
Qualcuno mi sa dire dove sbaglio all'interno del mio codice?
Grazie mille!
mainetz.

Rispondi quotando