Le 1 Feb 2002 Cyriaque Dupoirieux a �crit :
> Bonjour,
>
> Auriez-vous des exemples de manipulations de fichiers zip en java
> ?
>
Voici un extrait de ma prose sur le sujet. Il s'agit d'une op�ration
de d�zippage. Je me suis astreint � mettre des commentaires, pour
essayer de comprendre ce que j'avais fait. C'est du jdk1.1.8. Pour
mes petites affaires, il s'agissait de mettre en place la
configuration de base d'une application, configuration pr�sente zipp�
dans le .jar de cette appli.
private void d�zipeConfigBase() throws IOException
{
InputStream is;
ZipInputStream zip;
is = null;
zip = null;
try
{
ZipEntry ze;
File base;
// base est le repertoire destination
base = maBase.r�pertoire();
// la ressource configbase.zip est le zip origine.
is = getClass().getResourceAsStream("configbase.zip");
if (is != null)
{
zip = new ZipInputStream(is);
ze = zip.getNextEntry();
// tant que on n'a pas fait tout les entrees du zip...
while (ze != null)
{
String filename;
File destFile;
// on prend le nom de l'entree, et on remplace les etapes
// du chemin par / ou \ ou ...
filename = ze.getName();
filename = filename.replace('/', File.separatorChar);
destFile = new File(base, filename);
if (destFile.exists())
System.out.println("install : conserve "+destFile);
else
{
System.out.println("install : ecriture
"+destFile);
// si l'entree est un repertoire, on cree le repertoire
if (ze.isDirectory())
destFile.mkdirs();
else
{
// sinon, on cree le fichier.
String parent;
OutputStream out;
int count;
byte a_b[];
// on verifie si le repertoire parent du
fichier existe,
// sinon on le cree
parent = destFile.getParent();
if (parent != null)
{
File parentFile;
parentFile = new File(parent);
if (!parentFile.exists())
parentFile.mkdirs();
}
// ouverture du flux de destination
out = new FileOutputStream(destFile);
// et on fait le transfert par pas de 512
octets.
a_b = new byte[512];
count = zip.read(a_b);
while (count != -1)
{
out.write(a_b, 0, count);
count = zip.read(a_b);
}
out.close();
}
}
// en avant pour le prochain fichier compresse !
ze = zip.getNextEntry();
}
}
else
System.out.println("pas de zip des repertoires ?");
}
finally
{
if (is != null) is.close();
if (zip != null) zip.close();
}
}
Et voil� !
<pub>
C'est un extrait de notre produit "diaam auteur", dont vous pouvez
t�l�charger le exe d'install �
http://www.diaam.com/telechargement.html et qui contient les sources
:-)
</pub>
Sinon, il y a une tache Ant pour ziper/deziper. Peut-�tre pourrais-tu
la r�utiliser ?
--
Sur le Web, tout de suite.
Herve AGNOUX - diaam informatique
http://www.diaam-informatique.com