Tra i
package forniti di default nel linguaggio
Java, ne è presente uno che contiene una serie di oggetti di varia utilità, i quali spesso sono ignorati o poco conosciuti dagli sviluppatori meno smaliziati.
Il package java.util, infatti, oltre alle ben note classi di gestione di strutture dati (vettori, liste, ecc.)
contiene anche altri elementi interessanti, tra cui
un prezioso insieme di oggetti per l'utilizzo degli archivi ZIP:
java.util.zip.
Le classi fornite dal package di gestione dei file
.zip non sono tantissime (se ne contano circa una quindicina), ma risultano efficaci per gli scopi più importanti, tra cui l'implementazione dello stream di input (
ZipInputStream) e di output (
ZipOutputStream) di un file ZIP.
L'utilizzo del package
java.util.zip per scompattare un file in formato ZIP, generalmente, parte dall'associazione dello stesso ad un oggetto di tipo
ZipFile, sul quale è possibile invocare il metodo
entries(), che restituisce un
Enumeration, il quale elenca tutti gli elementi presenti nel file ZIP.
La classe ZipEntry implementa proprio un generico elemento di uno ZipFile, per cui, atttraverso l'utilizzo della seguente porzione di codice, si possono ottenere i riferimenti a ciascun oggetto zippato nell'archivio di input:
while(entries.hasMoreElements()) { ZipEntry entry = (ZipEntry)entries.nextElement();
[...]
Una volta ottenuto il riferimento all'oggetto, sarà possibile invocare
zipFile.getInputStream(entry) per ottenere lo stream di input associato a un file
zippato e, dunque, gestirlo come se fosse un qualunque stream, compresa, ad esempio la copia di un file di output, eseguendo, di fatto, la
scompattazione del file.
Il listato di una semplice utility di
scompattazione di file in formato ZIP è consultabile in un'
utile guida proposta da
Daniel F. Savarese.