PDA

Visualizza la versione completa : [JAVA] Decomprimere zip


morphy79
14-10-2005, 17:30
questo è il codice... mi decomprime solo il primo files ???
dove sbaglio ???



// FUNZIONE PER DECOMPRIMERE I FILES ZIP
public boolean unzip(String pathFile) throws IOException {
boolean returnValue = false;;
try {
int BUFFER = 2048;
BufferedOutputStream dest = null;
BufferedInputStream is = null;
ZipEntry entry;
ZipFile zipfile = new ZipFile(pathFile);
Enumeration e = zipfile.entries();
while(e.hasMoreElements()) {
entry = (ZipEntry) e.nextElement();
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();
zipfile.close();
returnValue = true;
}
} catch(Exception e) {
returnValue = false;
}
return returnValue;
}

morphy79
14-10-2005, 17:55
boh... cmq ho trovato quest'altro che funziona... :ciauz:



import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;



public class ZipHelper {

// FUNZIONE PER DECOMPRIMERE I FILES ZIP
public boolean unzip(String pathFile) throws IOException {
boolean trovatiErrori = true;
final int BUFFER = 2048;
try {
BufferedOutputStream dest = null;
FileInputStream fis = new FileInputStream(pathFile);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while((entry = zis.getNextEntry()) != null) {
int count;
byte data[] = new byte[BUFFER];
FileOutputStream fos = new FileOutputStream(entry.getName());
dest = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
}
zis.close();
trovatiErrori = false;
} catch(Exception e) {
trovatiErrori = true;
}

return trovatiErrori;
}

}

morphy79
18-10-2005, 16:57
ufffaaaa... ora mi sto arrabbiando !!!!!!
neanche questa va bene... anzichè estrarre cartelle mi rea un file con il nome della cartella !!!!!!!!!! :dhò:

ma insomma nessuno conosce un modo per unzippare decente ???? :cry:

Andrea1979
18-10-2005, 21:11
Dal forum della sun:



import java.io.*;
import java.util.*;
import java.util.zip.*;


public class Zipping {

public static ArrayList unzip(InputStream inputStream, String destinationDir) throws IOException {
ArrayList result = null;

final int BUFFER = 2048;

if (inputStream != null && destinationDir != null) {
result = new ArrayList();
ZipInputStream zis = null;
BufferedOutputStream bos = null;
try {
zis = new ZipInputStream(new BufferedInputStream(inputStream));
ZipEntry entry = null;
while((entry = zis.getNextEntry()) != null) { //for each zip entry
if (entry.isDirectory()) { //directory
File dir = new File(destinationDir + File.separator + entry.getName());
dir.mkdirs();
} else { //file
int count;
byte data[] = new byte[BUFFER];
String fileName = destinationDir + File.separator + entry.getName();
FileOutputStream fos = new FileOutputStream(fileName);
bos = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
bos.write(data, 0, count);
}
bos.flush();
result.add(fileName);
}
}//next zip entry
zis.close();
} finally {
if (bos != null) { try { bos.close(); } catch (IOException ioe) { /* ignore */ } }
if (zis != null) { try { zis.close(); } catch (IOException ioe) { /* ignore */ } }
}
}//else: input value unavailable

return result;
}//unzip()


public static void main (String[] args) {
if (args.length != 2) {
System.out.println("Uso: java Zipping File.ZIP Cartella_di_Destinazione");
System.exit(0);
}
else {
try {
unzip(new FileInputStream(args[0]), args[1]);
}
catch (Exception e) {
e.toString();
}
}
}

morphy79
19-10-2005, 10:01
..mhhh... e perchè non l'ho trovata ??? :dottò:

Andrea1979
19-10-2005, 10:48
biblioteconomia e tassonomia dovrebbero essere insegnate ancor prima dell'alfabeto... ;) Scherzavo... I post erano tantini, magari ti è sfuggito proprio quello che ti risolveva il problema....

morphy79
19-10-2005, 11:09
grazie 1000 cmq :ciauz:

franksisca
11-06-2012, 11:02
riuppo questa discussione di 7 anni fà non perchè sono pazzo, ma perchè nella ricerca è stata la soluzione che ha funzionato, on un piccolo "problema".

se non chiudo il programma è come se non facessse il close sui file. mi spiego meglio.


io devo decomprimere una cartella con dei file...quando vado a decomprimere la cartella la creazione dei file và a buon fine, solo che i file mi risultano a 0k e aperti, e devo chiudere l'applicazione per poi riaprirla ed avere i file correttamente salvati.

mi saperste "spiegare" il perchè?

alka
11-06-2012, 11:16
Originariamente inviato da franksisca
riuppo questa discussione di 7 anni fà non perchè sono pazzo, ma perchè nella ricerca è stata la soluzione che ha funzionato, on un piccolo "problema".


In tal caso, si apre una discussione nuova, descrivendo il proprio problema specifico ed eventualmente, se può essere utile, si fa riferimento a questa discussione con un link.

Loading