Compression-décompression de fichier

Soyez le premier à donner votre avis sur cette source.

Vue 15 935 fois - Téléchargée 1 528 fois

Description

Classe permetant la compression et décompression de fichier avec contrôle d'intégrité

Source / Exemple :


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 ;-).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Moyan
Messages postés
3
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
16 août 2007
-
Merci de mettre des commentaire avec les notes!
Et surtout donnés moi vos critiques pour ke je m'améliore
Merci
Moyan
joshAUZORRRE
Messages postés
2
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
20 novembre 2009
-
merci pour cette source je m'en sers pour créer des kmz =)

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.

Du même auteur (cs_Moyan)