Java - Compresser les fichiers sous le format ZIP

La librairie java.util.zip fournit un moyen de compression en format Zip en deux étapes:
Lire le fichier avec FileInputStream.
Ajouter le nom du fichier à ZipEntry et le sauvegarder en sortie avec ZipOutputStream.

Le programme suivant lit le fichier "c:\\FIchier0410.log" et le compresse dans "c:\\monFichier.zip".

package com.codeurjava.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class zipFile {

 public static void main(String[] args) {
 
 final int BUFFER = 2048;

 try{
 byte buffer[] = new byte[BUFFER];
 
 FileOutputStream fileos = new FileOutputStream("C:\\monFichier.zip");
 ZipOutputStream zipos = new ZipOutputStream(fileos);
 ZipEntry zipentry= new ZipEntry("c:\\Fichier0410.log");
 zipos.putNextEntry(zipentry);
 FileInputStream in = new FileInputStream("c:\\Fichier0410.log");

 int lec;
 while ((lec = in.read(buffer)) > 0) {
 zipos.write(buffer, 0, lec);
 }

 in.close();
 zipos.closeEntry();
 zipos.close();

 System.out.println("Fichier compressé créé!");

 }catch(IOException ex){
 ex.printStackTrace();
 }

 }

}
Exécution:

Fichier compressé créé!

Compresser plusieurs fichier d'un dossier récursivement

Lire tous les fichiers et les sous dossiers de "c:\\test" et les compresser dans "c:\\monFichier.zip". Ce programme compresse récursivement les répertoires.

package com.codeurjava.File;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class zipFile {

 final static String dossier_src = "c:\\test";
 final static String fichier_zip_desc = "monFichier.zip";
 static List<String> liste;
 
 public static void main(String[] args) {
 
 final int BUFFER = 2048;

 File node = new File(dossier_src);
 liste = new ArrayList();
 listeFichiers(node);
 
 try{
 byte buffer[] = new byte[BUFFER];
 
 FileOutputStream fileos = new FileOutputStream(fichier_zip_desc);
 ZipOutputStream zipos = new ZipOutputStream(fileos);
 
 for(String file : liste){
 ZipEntry zipentry= new ZipEntry(file);
 zipos.putNextEntry(zipentry);
 FileInputStream in =
 new FileInputStream(dossier_src + File.separator + file);
 
 int lec;
 while ((lec = in.read(buffer)) > 0) {
 zipos.write(buffer, 0, lec);
 }
 
 in.close();
 System.out.println("Fichier "+file+" ajouté");
 }
 
 zipos.closeEntry();
 zipos.close();

 System.out.println("Fichier compressé créé!");

 }catch(IOException ex){
 ex.printStackTrace();
 }

 }
 
 public static List listeFichiers(File node){

 //ajouter les fichiers
 if(node.isFile()){
 String file = node.getAbsoluteFile().toString();
 String chemin = file.substring(dossier_src.length()+1, file.length());
 liste.add(chemin);
 }
 
 if(node.isDirectory()){
 String[] sousFichier = node.list();
 for(String filename : sousFichier){
 listeFichiers(new File(node, filename));
 }
 }
 return liste;
 }
}
Exécution:

Fichier img_01.jpg ajouté
Fichier pdf\java.pdf ajouté
Fichier table.sql ajouté
Fichier word\cours java.docx ajouté
Fichier compressé créé!

Ressources:
http://www.oracle.com/technetwork/articles/java/compress-1565076.html

Commentaires (0)

Connectez-vous pour commenter

Rejoignez la discussion et partagez vos connaissances avec la communauté

Chargement des commentaires...