l'ho provato ma l'unica cosa che fa è creare un file "example.zip", ma lo crea vuoto (cioè se ne infischia di quello che c'è nella cartella "example")!!!
Io ho scritto questi (qualche nome di file o cartella magari è un po' strano, non badateci... son tutte prove!):
codice:
import java.io.*;
import java.lang.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.tree.*;
import javax.swing.filechooser.FileSystemView;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class scompattatore {
private File cartella_lavoro;
scompattatore(){ cartella_lavoro = new File("CARTELLA_LAVORO");
System.out.println("Creato cartella lavoro");
}//end costruttore
public void scompatta(File pack)throws ZipException,IOException{
System.out.println("entrato nel metodo");
//File pack = JFilechooser.getSelectedFile();
//controllaestensione(pack, "zip");
/*se va bene*/
try {System.out.println("entrato nel try");
ZipFile zpackage = new ZipFile(pack,ZipFile.OPEN_READ);
System.out.println("Creato zipfile");
Enumeration lista = zpackage.entries();
System.out.println("creata Enumeration");
for(int i = 0; i < zpackage.size(); i++)
{ZipEntry entry = (ZipEntry)lista.nextElement();
System.out.println("il nome della entry e':");
System.out.println(entry.getName());
System.out.println(entry.getMethod());
System.out.println(entry.getExtra());
System.out.println(entry.getComment());
System.out.println(entry.getCrc());
System.out.println(entry.getCompressedSize());
System.out.println(entry.getSize());
System.out.println("il separatore e':");
String separatore = "/";
System.out.println(separatore);
StringTokenizer temp = new StringTokenizer( entry.getName(), separatore);
String path_interno = "";
int ntoken = temp.countTokens();
String ultimo = "";
File provv;
File ultima_cartella = cartella_lavoro;
if ( ntoken > 1 )
{
int j;
for ( j = 1; j < ntoken; j++ )
{ ultimo = temp.nextToken();
if (j == 1){path_interno = ultimo;
provv = new File(cartella_lavoro,ultimo);
provv.mkdir();
System.out.println("Creata dir" + ultimo);
ultima_cartella = provv;}
else{provv = new File(ultima_cartella, ultimo);
provv.mkdir();
System.out.println("Creata dir" + ultimo);
path_interno = path_interno + "\\" + ultimo;
ultima_cartella = provv;}
}//end for
}// End if
if(entry.isDirectory()){File entry1 = new File(ultima_cartella, entry.getName());
entry1.mkdir();}
else{
InputStream in = zpackage.getInputStream(entry);
FileOutputStream out = new FileOutputStream(new File(cartella_lavoro,entry.getName()));
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}//end for
}//end try
catch(Exception e){e.printStackTrace();}
/*altrimenti messaggio di errore*/
}//end scompatta
public static void main(String[] args) throws IOException {
scompattatore s = new scompattatore();
File daScompattare = new File("eser.zip");
System.out.println("Agganciato file");
s.scompatta(daScompattare);
System.out.println("Finito");
}//end main
}//end class
import java.io.*;
import java.util.zip.*;
public class Zip {
static final int BUFFER = 2048;
public static void main2 (String cartella, String destinazione) {
try {
BufferedInputStream origin = null;
FileOutputStream dest = new
FileOutputStream(destinazione);
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(dest));
//out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
// get a list of files from current directory
File f = new File(cartella);
String files[] = f.list();
for (int i=0; i System.out.println("Adding: "+files[i]);
File f1 = new File(cartella + "\\" + files[i]);
if(!(f1.isDirectory())){
FileInputStream fi = new
FileInputStream(cartella + "\\" + files[i]);
origin = new
BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i]);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0,
BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}//end if
else{
ZipEntry entry2 = new ZipEntry(files[i]);
entry2.setMethod(0);
entry2.setCrc(0);
entry2.setCompressedSize(0);
entry2.setSize(0);
out.setMethod(ZipOutputStream.STORED);
out.putNextEntry(entry2);
String c = cartella + "\\" + files[i];
String d = destinazione;
main2(c,d);
}//end else
}//end for
out.close();
} catch(Exception e) {
e.printStackTrace();
}
}//end main2
public static void main(String argv[]){
main2("CARTELLA_PROVA","c:\\Documents and Settings\\laura\\Desktop\\Laura\\myfigs6.zip");
}//end main
}
La prima classe (scompattatore) funziona perfettamente, mentre Zip crea il file zippato, riesce ad inserire i files che sono contenuti al primo livello della directory ma alla prima sottocartella smette di inserire i files (ma non dà eccezioni e soprattutto, guardando le stampe di sistema, percorre tutto l'albero delle directory... quindi non capisco perchè non si degna nemmeno di dirmi che c'è un errore!!!)
ciao e grazie!