|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2009
Messaggi: 239
|
[JAVA] Decomprimere cartella contenente sottocartelle e file
Non riesco a decomprimere da zip, una cartella molto complessa con all'interno molte sottocartelle e file. Ho googlato qua e là ma ho trovato poco...qualcuno l'ha già fatto?
P.S inoltre dovrei gestire le stringhe che iniziano con "Errore", per esempio le due stringhe "Errore xxx" e "Errore xyz" devono essere uguali per me. Come si fa a gestire stringhe cosi??
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
L'estrazione di uno zip è sequenziale: i suoi elementi sono "finte" cartelle. I passaggi nudi e crudi sono:
Codice:
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class Unzip {
public static void main(String[] args) throws Throwable { //non si rilascia un Throwable
ZipFile zipFile = new ZipFile(args[0]);
File outDir = new File(args[1]);
for(ZipEntry e : Collections.list(zipFile.entries())) {
File dest = new File(outDir, e.getName());
if(e.isDirectory()) {
dest.mkdirs();
} else {
dest.getParentFile().mkdirs();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dest));
BufferedInputStream in = new BufferedInputStream(zipFile.getInputStream(e));
for(int b = in.read(); b != -1; b = in.read()) { out.write(b); }
out.flush();
out.close(); //va messo in un finally
in.close(); //va messo in un finally
}
}
zipFile.close(); //va messo in un finally
}
}
Per le stringhe, meccanicamente ti interessa "startsWith": if(stringa.startsWith("Errore")) { ... } In generale l'identità di un oggetto con un altro è una questione abbastanza intima da consigliare l'incapsulamento, tipo: Codice:
public class Messaggio {
private static final String ERRORE = "Errore";
private final int HASH;
private final String CONTENT;
public Messaggio(String content) {
CONTENT = content;
if(CONTENT.startsWith(ERRORE)) {
HASH = ERRORE.hashCode();
} else {
HASH = CONTENT.hashCode();
}
}
public int hashCode() {
return HASH;
}
public boolean equals(Object that) {
return (that instanceof Messaggio) && (that.hashCode() == this.hashCode());
}
public String toString() {
return CONTENT;
}
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2009
Messaggi: 239
|
GRAZIE MILLE!! funzionamento corretto per tutte e due le cose!!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:29.



















