Ce code vous permet de compresser un ensemble de données en un seul fichier archive d'extension .zip. Il y a des commentaires donc vous pourrez le modifier selon vos besoins.
Source / Exemple :
import java.util.zip.*;
import java.io.*;
public class ZIP {
public static void main(String args[]) throws Exception {
//Déclaration de l'archive ZIP
String rep = "c:compresse";
String fichzip = "zippé.zip";
File fichier = new File(rep, fichzip);
FileOutputStream flux = new FileOutputStream(fichier);
ZipOutputStream fichierZIP = new ZipOutputStream(flux);
//Méthode de compression DEFLATED
fichierZIP.setMethod(ZipOutputStream.DEFLATED);
//Niveau de compression
//9 = BEST_COMPRESSION
fichierZIP.setLevel(Deflater.BEST_COMPRESSION);
boolean fin = false;
int n = 1;
BufferedReader entree = new BufferedReader(new
InputStreamReader(System.in));
while(!fin){
System.out.println("Nom du fichier numero "+n+" a archiver.\nNe pas
oublier l'extension. \nTapez \"x2802x\" pour sortir");
System.out.println ();
n++;
String Fich = entree.readLine();
if(Fich.equals("x2802x")){ fin = true; }
ZipEntry entreeZIP = new ZipEntry(Fich);
fichierZIP.putNextEntry(entreeZIP);
//Envoi du contenu dans l'archive à travers un flux
BufferedOutputStream flushOut = new BufferedOutputStream(fichierZIP);
DataOutputStream fileData = new DataOutputStream(flushOut);
if(Fich.equals("x2802x")){fileData.writeBytes("c'est la fin!");}
else{
System.out.println("Entrez les donnees a garder ici.");
System.out.println("Pour finir taper x2802x sur une ligne
vide.");
System.out.println();
while(!(Fich=entree.readLine()).equals("x2802x")){
fileData.writeBytes(Fich);
fileData.flush();
}
Fich = "";
}
//Fermeture de l'archive jusqu'à la prochaîne entrée
fichierZIP.closeEntry();
System.out.println ("Taille : " + entreeZIP.getCompressedSize());
System.out.println ();
if(Fich.equals("x2802x")){ fileData.close(); }
}
//Fermeture de l'archive et du flux
fichierZIP.close();
flux.flush();
flux.close();
}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.