Ciao a tutti.
Ho un problema riguardante l'estrazione di una entry da un archivio che è dentro una cartella dell'archivio stesso.
Io uso lo stesso codice che ho trovato tra i vari esempi della sun:
Il problema è nel fatto che se la entry è contenuta in una cartella il metodo entry.getName restituisce una cosa del tipo directory/nomeEntry quindi alla rigacodice:import java.io.*; import java.util.*; import java.util.zip.*; public class UnZip2 { static final int BUFFER = 2048; public static void main (String argv[]) { try { BufferedOutputStream dest = null; BufferedInputStream is = null; ZipEntry entry; ZipFile zipfile = new ZipFile(argv[0]); Enumeration e = zipfile.entries(); while(e.hasMoreElements()) { entry = (ZipEntry) e.nextElement(); System.out.println("Extracting: " +entry); is = new BufferedInputStream (zipfile.getInputStream(entry)); int count; byte data[] = new byte[BUFFER]; FileOutputStream fos = new FileOutputStream(entry.getName()); dest = new BufferedOutputStream(fos, BUFFER); while ((count = is.read(data, 0, BUFFER)) != -1) { dest.write(data, 0, count); } dest.flush(); dest.close(); is.close(); } } catch(Exception e) { e.printStackTrace(); } } }
mi genera unacodice:FileOutputStream fos = new FileOutputStream(entry.getName());
invece se a quel codice sostituiscocodice:java.io.FileNotFoundException: jEdit-2.3pre4\jedit.jar (Impossibile trovare il percorso specificato)
esegue tutto senza errori salvandomela nella cartella root del progetto.codice:FileOutputStream fos = new FileOutputStream("jedit.jar")
Ora ho pensato posso usare il metodo split di string (su entry.getName()) e tenere solo l'ultimo valore (il vero nome del file senza directory) solo che io devo poter salvare il file dentro la stessa directrory dove si trova l'archivio e dentro una cartella chiamata dir001.
1) E' giusto come ho pensato di ovviare il problema dell'eccezione?
2) Come posso fare per eseguire il salvataggio all'interno di directory?

Rispondi quotando