Ca fait bien un an que j'ai pas touché de code java, et là je m'y remets, et ça fait drole...
J'ai fais ceci pour zipper des fichiers :
Code :
- buffer = new byte[10000];
- try {
- ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(filename));
- zip.setLevel(Deflater.BEST_COMPRESSION);
- for (int i = 0;i < files.length;i++) {
- FileInputStream file = new FileInputStream(files[i]);
- zip.putNextEntry(new ZipEntry(files[i].getName()));
- int length;
- while ((length = file.read(buffer)) > 0) {
- zip.write(buffer,0,length);
- }
- System.out.println("Fichier ajouté" );
- zip.closeEntry();
- file.close();
- }
- zip.close();
|
Je vous passe le code de débug et le choix pourri de nom de variables, ct juste un test quick and dirty...
Juste un truc que j'ai oublié, et que j'ai pas réussi à trouver dans l'API java, ni dans le java tutorial :
Code :
- while ((length = file.read(buffer)) > 0) {
- zip.write(buffer,0,length);
- }
|
je suis pas sur de bien comprendre l'utilisation du buffer ici...c'est une zone tampon que mon input stream remplit, que mon outputstream vide...ce que je comprends pas bien c'est comment ca se gère en interne, parce que le code parait ridiculement simple par rapport à ce qu'il accomplit, à savoir remplir un buffer, le vide, quand il est vide le reremplit, etc...
---------------
Jubi Photos : Flickr - 500px