Compression d'un répertoire
Bonjour,
j'essai de compresser un repertoire mais mon .zip reste vide... :(
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
public void compresser (File file,String strDest) throws Exception{
ArrayList<String> liste = new ArrayList<String>();
this.listerFichier(file, liste);
// taille de tampon
final int BUFFER = 2048;
byte data[] = new byte[BUFFER];
//flux d'écriture (archive)
FileOutputStream dest = new FileOutputStream(strDest);
// FileInputStream dest2 = new FileInputStream(strDest);
// buffer de sorti
BufferedOutputStream buff = new BufferedOutputStream(dest);
// Buff
//flux d'écriture
ZipOutputStream out = new ZipOutputStream(buff);
out.setMethod(ZipOutputStream.DEFLATED); // methode de compression
out.setLevel(9); // niveau de compression
byte[] buf = new byte[1024];
int taille = liste.size();
for (int i = 0 ; i< taille ; i++ ){
// on recupère le fichier
System.out.println(liste.get(i));
FileInputStream fi = new FileInputStream(liste.get(i));
//buffer d'entree
// BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
//
//creation d'une entree zip
ZipEntry entry = new ZipEntry(liste.get(i));
// affectation de l'entree au flux de sortie
out.putNextEntry(entry);
//Écriture des entrées dans le flux de sortie par paquet de taille
//égale aux tampons dentrée et de sortie
int count;
// while((count = buffi.read(data, 0, BUFFER)) != -1) {
// out.write(data, 0, count);
// }
int len;
while ((len = fi.read(buf)) > 0) {
out.write(buf, 0, len);
}
//fermeture de l'entree en cours et du flux
out.closeEntry();
fi.close();
}
// out.close();
} |
ma methode qui liste les fichiers du dossier
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public void listerFichier(File file,ArrayList liste){
// si c'est un répertoire
if (file.isDirectory()){
// on liste les sous dossier et fichier qu'il contient
File[] files = file.listFiles();
// si non vide
if (files!=null){
int taille= files.length;
for (int i = 0; i< taille ; i++){
// on regarde si c'est un repertoire
if (files[i].isDirectory()){
this.listerFichier(files[i],liste);
}
else
// on ajoute a la liste des fichiers
liste.add(files[i].getAbsolutePath());
}
}
}
else
//on ajoute a la liste des fichiers
liste.add(file.getAbsolutePath());
} |
quelqu'un peut me dire ce qui va pas??:calim2:
merci