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;Exécution:
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();
}
}
}
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 ListlisteFichiers(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: