begin process at 2010 02 09 13:37:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > UNZIP - DÉZIPEUR

UNZIP - DÉZIPEUR


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :unzip Niveau :Initié Date de création :30/04/2005 Date de mise à jour :21/11/2005 14:36:09 Vu / téléchargé :5 952 / 242

Auteur : grand_jeanluc

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Programme permettant le déziper un zip avec une sous arborescence dans le zip.

Source

  • import java.io.*;
  • import java.util.*;
  • import java.util.zip.*;
  • public class UnZipPerso {
  • static final int BUFFER = 2048;
  • public UnZipPerso(String path) {
  • try {
  • // préparation du zip
  • BufferedOutputStream dest = null;
  • BufferedInputStream is = null;
  • ZipEntry entry;
  • ZipFile zipfile = new ZipFile(path);
  • Enumeration e = zipfile.entries();
  • // recharche du nom du zip
  • File pathNom = new File(path);
  • String nomFichier = pathNom.getName();
  • String nom = nomFichier.substring(0, nomFichier.length() - 4);
  • //System.out.println(nom);
  • // création du dossier racine
  • File NOM = new File(nom);
  • NOM.mkdir();
  • // URL de base
  • String URLbase = "." + "/" + nom ;
  • // boucle d'extraction des fichiers
  • while (e.hasMoreElements()) {
  • // préparation du fichier courant à extraire
  • entry = (ZipEntry) e.nextElement();
  • String url = entry.getName();
  • //System.out.println("Extracting: " + url);
  • String URLfichier = URLbase + "/" + url;
  • //System.out.println("URL: " + URLfichier);
  • File URL = new File(URLfichier);
  • if (isFile(URL.getName())) {
  • // écriture du fichier (extraction)
  • is = new BufferedInputStream
  • (zipfile.getInputStream(entry));
  • int count;
  • byte data[] = new byte[BUFFER];
  • FileOutputStream fos = new
  • FileOutputStream(URLfichier);
  • dest = new
  • BufferedOutputStream(fos, BUFFER);
  • while ( (count = is.read(data, 0, BUFFER))
  • != -1) {
  • dest.write(data, 0, count);
  • }
  • dest.flush();
  • dest.close();
  • is.close();
  • }
  • else {
  • // zone répértoire
  • URL.mkdirs();
  • }
  • }
  • }
  • catch (Exception e) {
  • e.printStackTrace();
  • }
  • }
  • private boolean isFile (String nom) {
  • for (int i=nom.length()-1; i>=0; i--) {
  • if (nom.charAt(i) == '.' ) {
  • return true;
  • }
  • }
  • return false;
  • }
  • public static void main(String[] args) {
  • String path = "./essai.zip";
  • UnZipPerso unZip1 = new UnZipPerso(path);
  • }
  • }
import java.io.*;
import java.util.*;
import java.util.zip.*;


public class UnZipPerso {

  static final int BUFFER = 2048;

  public UnZipPerso(String path) {
    try {

      // préparation du zip
      BufferedOutputStream dest = null;
      BufferedInputStream is = null;
      ZipEntry entry;
      ZipFile zipfile = new ZipFile(path);
      Enumeration e = zipfile.entries();

      // recharche du nom du zip
      File pathNom = new File(path);
      String nomFichier = pathNom.getName();
      String nom = nomFichier.substring(0, nomFichier.length() - 4);
      //System.out.println(nom);

      // création du dossier racine
      File NOM = new File(nom);
      NOM.mkdir();

      // URL de base
      String URLbase = "." + "/" + nom ;



      // boucle d'extraction des fichiers
      while (e.hasMoreElements()) {

        // préparation du fichier courant à extraire
        entry = (ZipEntry) e.nextElement();
        String url = entry.getName();
        //System.out.println("Extracting: " + url);

        String URLfichier = URLbase + "/" + url;
        //System.out.println("URL: " + URLfichier);

        File URL = new File(URLfichier);


        if (isFile(URL.getName())) {
          // écriture du fichier (extraction)
          is = new BufferedInputStream
              (zipfile.getInputStream(entry));
          int count;
          byte data[] = new byte[BUFFER];
          FileOutputStream fos = new
              FileOutputStream(URLfichier);
          dest = new
              BufferedOutputStream(fos, BUFFER);
          while ( (count = is.read(data, 0, BUFFER))
                 != -1) {
            dest.write(data, 0, count);
          }
          dest.flush();
          dest.close();
          is.close();
        }
        else {
          // zone répértoire
          URL.mkdirs();
        }

      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }

  private boolean isFile (String nom) {
    for (int i=nom.length()-1; i>=0; i--) {

      if (nom.charAt(i) == '.' ) {
        return true;
      }

    }

    return false;
  }

  public static void main(String[] args) {
    String path = "./essai.zip";
    UnZipPerso unZip1 = new UnZipPerso(path);
  }

}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   unzip4
    •   classes
      •   package cache
        • unnamed package.dep2Télécharger ce fichier [Réservé aux membres club]1 093 octets
      • UnZipPerso.classTélécharger ce fichier [Réservé aux membres club]1 685 octets
    •   src
    • essai.zipTélécharger ce fichier [Réservé aux membres club]13 879 octets
    • unzip4.jpxTélécharger ce fichier [Réservé aux membres club]2 909 octets
    • unzip4.jpx.localTélécharger ce fichier [Réservé aux membres club]2 327 octets
    • unzip4.jpx.local~Télécharger ce fichier [Réservé aux membres club]2 273 octets

Télécharger le zip


 Historique

06 mai 2005 23:14:18 :
14 mai 2005 22:23:36 :
correction du bug du traitement dossier/fichier. Ajout d'une methode de test pour savoir si c'est un fichier ou pas.
21 novembre 2005 14:36:10 :
Amélioration de l'algorithme. Plus simple...

 Sources du même auteur

Source avec Zip Source avec une capture GESTION D'IMAGES NUMÉRIQUES
Source avec Zip CONVERSION IMAGE
Source avec Zip ARBORESCENCE - DISQUE DUR - JTREE
Source avec Zip ZIPEUR DE FICHIER 2

 Sources de la même categorie

Source avec Zip Source avec une capture TRADUCTEUR FRANÇAIS --> NERLANDAIS par edouard333
Source avec Zip IA POUR DISCUTER par edouard333
Source avec Zip Source avec une capture JSUBTITLE1.0 par darrylsite
Source avec Zip COMPILATEUR PASCAL par youma85
Source avec Zip CONTENEUR DE COMPOSANT HETEROGENES par mad_charif

Commentaires et avis

Commentaire de neodante le 30/04/2005 19:59:01 administrateur CS

Salut,
que signifie pour toi : 'compatible win32' ???
Java n'est pas censé être portable surtout sur les APIs standards ????

++

Commentaire de grand_jeanluc le 06/05/2005 23:11:25

C'est qu'il soit lisible avec winzip... c'est tout.

Commentaire de neodante le 07/05/2005 00:01:11 administrateur CS

win32 ne signifie pas du tout ça et en plus ZIP est seulement un algorithme de compression, donc celui ci n'est pas spécifique à Windows (WinZip n'est qu'une interface, et pas la meilleure d'ailleurs), la preuve : les fichiers JAR sont des fichiers ZIP et ils sont bien portable ...

Juste pour que tout le monde puisse comprendre ce terme, tu aurais du mettre WinZIP ... bien que cela soit quelque peu inutile.

A quand le zippeur ??? ;-)

++

Commentaire de larsson le 12/05/2005 18:04:38

salut,
g une mauvaise nouvelle :
g essayé avec un rep zippé chez moi et... il plante !
il ne marche pas. g dans mon arbo un rep qui contient 3lettre 'mkd' et lors du test if( (char)token.charAt(token.length()-4) == '.' ) il me sort une exception.
(bon si ce n'est pas moi qui se trompe)
a part ça ton code me parait correct (avec qqe rectification il deviendras nickel).

Commentaire de grand_jeanluc le 14/05/2005 21:44:12

lien du zipeur:
http://www.javafr.com/codes/ZIPEUR-DE-FICHIER-2/30684.aspx

Commentaire de grand_jeanluc le 14/05/2005 21:47:24

j'ai oublié les noms de repertoire minimalistes... sorry

Commentaire de Syruis le 24/05/2005 13:11:27

Salut,
ta corriger le bug ??

Merci...

Commentaire de allerajl le 21/11/2005 10:15:57

bonjour,
que faut-il mettre comme path sous windows. Je n'arrive pas à le faire fonctionner.

cordialement.

Commentaire de grand_jeanluc le 21/11/2005 14:46:08

Il faut mettre l'url de ton fichier zip. exemple: c:/arborescence.../nom_du_zip.zip c'est tout.
Bonne utilisation.

Commentaire de Micke7 le 27/10/2008 15:09:59

Bonjour,

3 ans aprés ce code sert encore ;)
ALors à moins qu'il n'existe une nouvelle librairies qui unzip facilement je vais utiliser celui-là :).
Par contre un petit bug : si un dossier contient un point, le traitement le prend pour un fichier et donc ça fout un peu le brin. Il doit bien y avoir une autre solution pour tester si le fichier es t bien eun fichier et non un dossier?

Commentaire de Micke7 le 27/10/2008 22:28:27

Je me peret de poser une correction qui prend en compte les dossiers avec des "." et les extensions sans "."

import java.io.*;
import java.util.*;
import java.util.zip.*;


public class Unzip {

  static final int BUFFER = 2048;

  public Unzip(String path) {
    
try {

      // préparation du zip
      BufferedOutputStream dest = null;
      BufferedInputStream is = null;
      ZipEntry entry;
      ZipFile zipfile = new ZipFile(path);
      Enumeration e = zipfile.entries();

      // recharche du nom du zip
      File pathNom = new File(path);
      String nomFichier = pathNom.getName();
      String nom = nomFichier.substring(0, nomFichier.length() - 4);
      //System.out.println(nom);

      // création du dossier racine
      File NOM = new File("../" + nom);
      NOM.mkdir();
      

      // URL de base
      String URLbase = "../" + "." + "/" + nom ;

      // boucle d'extraction des fichiers
      while (e.hasMoreElements()) {

        // préparation du fichier courant à extraire
        entry = (ZipEntry) e.nextElement();
        String url = entry.getName();
        //System.out.println("Extracting: " + url);

        String URLfichier = URLbase + "/" + url;
        //System.out.println("URL: " + URLfichier);

        //File URL = new File(URLfichier);
        
      if (isFile(URLfichier)) {
          // écriture du fichier (extraction)
         is = new BufferedInputStream
              (zipfile.getInputStream(entry));
          int count;
          byte data[] = new byte[BUFFER];
          FileOutputStream fos = new
              FileOutputStream(URLfichier);
          dest = new
              BufferedOutputStream(fos, BUFFER);
          while ( (count = is.read(data, 0, BUFFER))
                 != -1) {
            dest.write(data, 0, count);
          }
          dest.flush();
          dest.close();
          is.close();
        }
        else {
          // zone répértoire
         File URL = new File(URLfichier);
         URL.mkdirs();
        }

      }
      System.out.println("Décompréssion terminée");
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }
  
  private boolean isFile (String nom) {
  int i = nom.length();
  if (nom.charAt(i-1) == '/' ) {
        return false;
  }
  else{ return true;}
  }

}

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales