Accueil > > > COMPRESSION-DÉCOMPRESSION DE FICHIER
COMPRESSION-DÉCOMPRESSION DE FICHIER
Information sur la source
Description
Classe permetant la compression et décompression de fichier avec contrôle d'intégrité
Source
-
- import java.io.*;
- import java.util.zip.*;
- import sun.text.Normalizer;
-
- public class ZIPFichier {
- File OBjFile;
- public ZIPFichier() {
-
- }
- /**********************************************************************/
- /**
- *@param String SRC:Nom du Fichier Source nom.type
- *@param String DEST:Nom du Fichier Destination du type .Zip
- /**********************************************************************/
- void compression(String SRC,String DEST) throws FileNotFoundException, IOException {
-
- OBjFile = new File(SRC);
- /*Une valeur de taille de tampon pour les buffers d’entrée et de
- sortie utilisés par la suite, et un buffer de données*/
- int BUFFER = 2048;
- byte data[] = new byte[BUFFER];
- /*Création d’un flux d’écriture vers un fichier, ce fichier sera l’archive Zip finale*/
- FileOutputStream dest = new FileOutputStream(DEST);
- // Contrôle des données ajout d'un checksum : Adler32 (plus rapide)
- CheckedOutputStream checksum =new CheckedOutputStream(dest, new Adler32());
- /*Création d’un buffer de sortie afin d’améliorer les performances d’écriture*/
- BufferedOutputStream buff = new BufferedOutputStream(checksum);
- /*Création d’un flux d’écriture Zip vers ce fichier à travers le buffer*/
- ZipOutputStream out = new ZipOutputStream(buff);
- /*Spécifier la méthode de compression désirée*/
- out.setMethod(ZipOutputStream.DEFLATED);
- /*Spécifier le taux de compression (entier positif entre 0 et 9)*/
- out.setLevel(9);
- /*les fichiers à compresser*/
- FileInputStream fi = new FileInputStream(OBjFile.getPath());
- /*Création d'un buffer d’entrée*/
- BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
- /*Création d'une entrée Zip*/
- ZipEntry entry = new ZipEntry(unAccent(OBjFile.getName()));
- /*affectation de l'entrée au flux de sortie*/
- out.putNextEntry(entry);
- /*Écriture des entrées dans le flux de sortie par paquet de taille
- égale aux tampons d’entrée et de sortie*/
- int count;
- while ((count = buffi.read(data, 0, BUFFER)) != -1) {
- out.write(data, 0, count);
- }
- /*Fermeture de l’entrée*/
- out.closeEntry();
- /*Fermeture des flux*/
- buffi.close();
- out.close();
- }
- /**********************************************************************/
- /**
- *@param String SRC:Nom du Fichier Source du type .Zip
- *@param String DEST:Nom du Fichier Destination nom.type
- /**********************************************************************/
- void decompression(String SRC,String DEST) throws FileNotFoundException, IOException {
- /*Déclaration d’un fichier destination*/
- FileOutputStream FileDEST = new FileOutputStream(DEST);
- /*Ouverture du fichier à décompresser*/
- FileInputStream FileZipSRC = new FileInputStream(SRC);
- /*Ouverture buffer sur ce fichier*/
- BufferedInputStream buffer= new BufferedInputStream(FileZipSRC);
- /*Création d’un flux de lecture Zip vers ce fichier à travers le buffer*/
- ZipInputStream FluxZIP = new ZipInputStream(buffer);
- ZipEntry entry;
- if(FluxZIP.getNextEntry() != null){
- byte[] tab = new byte[4096];
- /*Lecture du fichier ZIP*/
- int lu = -1;
- do {
- lu = FluxZIP.read(tab);
- /*Test si Fin de fichier*/
- if (lu > 0)
- FileDEST.write(tab, 0, lu);
- } while (lu > 0);
- /*Vidage du tampon en écriture*/
- FileDEST.flush();
- /*Fermeture de l’archive*/
- FluxZIP.close();
- }
- /*Fermeture du fichier destination*/
- FileDEST.close();
- /*Fermeture du fichier source*/
- FileZipSRC.close();
-
- }
- /**********************************************************************/
- /**
- *@param String s:Caractère à tester
- /**********************************************************************/
- public static String unAccent(String s) {
- String temp = Normalizer.normalize(s, Normalizer.DECOMP, 0);
- return temp.replaceAll("[^\\p{ASCII}]","");
- }
-
- }
import java.io.*;
import java.util.zip.*;
import sun.text.Normalizer;
public class ZIPFichier {
File OBjFile;
public ZIPFichier() {
}
/**********************************************************************/
/**
*@param String SRC:Nom du Fichier Source nom.type
*@param String DEST:Nom du Fichier Destination du type .Zip
/**********************************************************************/
void compression(String SRC,String DEST) throws FileNotFoundException, IOException {
OBjFile = new File(SRC);
/*Une valeur de taille de tampon pour les buffers d’entrée et de
sortie utilisés par la suite, et un buffer de données*/
int BUFFER = 2048;
byte data[] = new byte[BUFFER];
/*Création d’un flux d’écriture vers un fichier, ce fichier sera l’archive Zip finale*/
FileOutputStream dest = new FileOutputStream(DEST);
// Contrôle des données ajout d'un checksum : Adler32 (plus rapide)
CheckedOutputStream checksum =new CheckedOutputStream(dest, new Adler32());
/*Création d’un buffer de sortie afin d’améliorer les performances d’écriture*/
BufferedOutputStream buff = new BufferedOutputStream(checksum);
/*Création d’un flux d’écriture Zip vers ce fichier à travers le buffer*/
ZipOutputStream out = new ZipOutputStream(buff);
/*Spécifier la méthode de compression désirée*/
out.setMethod(ZipOutputStream.DEFLATED);
/*Spécifier le taux de compression (entier positif entre 0 et 9)*/
out.setLevel(9);
/*les fichiers à compresser*/
FileInputStream fi = new FileInputStream(OBjFile.getPath());
/*Création d'un buffer d’entrée*/
BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
/*Création d'une entrée Zip*/
ZipEntry entry = new ZipEntry(unAccent(OBjFile.getName()));
/*affectation de l'entrée au flux de sortie*/
out.putNextEntry(entry);
/*Écriture des entrées dans le flux de sortie par paquet de taille
égale aux tampons d’entrée et de sortie*/
int count;
while ((count = buffi.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
/*Fermeture de l’entrée*/
out.closeEntry();
/*Fermeture des flux*/
buffi.close();
out.close();
}
/**********************************************************************/
/**
*@param String SRC:Nom du Fichier Source du type .Zip
*@param String DEST:Nom du Fichier Destination nom.type
/**********************************************************************/
void decompression(String SRC,String DEST) throws FileNotFoundException, IOException {
/*Déclaration d’un fichier destination*/
FileOutputStream FileDEST = new FileOutputStream(DEST);
/*Ouverture du fichier à décompresser*/
FileInputStream FileZipSRC = new FileInputStream(SRC);
/*Ouverture buffer sur ce fichier*/
BufferedInputStream buffer= new BufferedInputStream(FileZipSRC);
/*Création d’un flux de lecture Zip vers ce fichier à travers le buffer*/
ZipInputStream FluxZIP = new ZipInputStream(buffer);
ZipEntry entry;
if(FluxZIP.getNextEntry() != null){
byte[] tab = new byte[4096];
/*Lecture du fichier ZIP*/
int lu = -1;
do {
lu = FluxZIP.read(tab);
/*Test si Fin de fichier*/
if (lu > 0)
FileDEST.write(tab, 0, lu);
} while (lu > 0);
/*Vidage du tampon en écriture*/
FileDEST.flush();
/*Fermeture de l’archive*/
FluxZIP.close();
}
/*Fermeture du fichier destination*/
FileDEST.close();
/*Fermeture du fichier source*/
FileZipSRC.close();
}
/**********************************************************************/
/**
*@param String s:Caractère à tester
/**********************************************************************/
public static String unAccent(String s) {
String temp = Normalizer.normalize(s, Normalizer.DECOMP, 0);
return temp.replaceAll("[^\\p{ASCII}]","");
}
}
Conclusion
Le fichier ZIP comporte toutes les information et explication du code ;-).
Historique
- 19 mars 2007 13:43:42 :
- Ajout de commentaire
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Zip, servlet, et fichier Excel [ par as634 ]
J'ai créé un fichier excel grace à jExcel. Je voudrais insérer ce fichier dans une archive zip qui sera renvoyée par ma servlet.Voici mon code pour la
Compatibilite de Zip? [ par larecrue ]
Bonjour, J’ai quelques problemes: Le plus facile: comment fait on pour n’avoir que la petite croix pour fermer dans sa Jframe. Un peu pl
How to "Splitter un fichier zip généré en java ? " [ par homerosaur ]
Salut à tous,je recherche un moyen de splitter un fichier zip que je génère en java.Mille merci d'avance à qui pourrait m'aidertiti
download d'un fichier zip sur un site internet [ par yann.jaunin ]
Hello,j'essaye de télécharger un fichier zip qui se trouve sur un site internet. Je suis débutant donc soyez indulgent :-)voici l'erreur que j'aie :un
PROBLEME DE ZIP [ par gui_llaume1 ]
Bonjour à tous,J'explique mon cas.Je crée dans une appli swing à un moment un fichier zip à partir d'un tableau de String contenan
decompresser un fichier zip [ par kam81 ]
Bonjour,Je cherche de l'aide pour decompresser un fichier zip se trouvant dans un repertoire rep1et envoyer le resultat dans un repertoire rep2.merci.
Lire fichier .zip [ par luckybenji86 ]
Bonjour,J'aimerai savoir si quelqu'un à déja essayé de lire des fichier dans un .zip avec mot de passe.En utilisant la libririe java.util.zip mais cel
Comment utiliser un fichier zip télécharger [ par Naidoo ]
Bonsoir à tous,j'ai besoin d'aide car j'ai de la peine à cerner un certain problème...Pouvez vous m'expliquer, points par points, comment utiliser un
[A SUPPRIMER]ouvrir un fichier en format zip par une application java. [ par radjaco ]
bonjour, j'ai un fichier zip qui contient plusieurs fichiers .txt,je veudrai savoir comment faire pour afficher le contenu d'un de ces fichiers textes
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SQLRE : SQL par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|