IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[Zip] Zip de répertoire ?


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut [Zip] Zip de répertoire ?
    Bonjour,

    JE cherche à zipper une arborescence de répertoires

    J'ai le code suivant pour zipper un répertoire le pb c'est que dans mon archive les répertoires ont leur chemin depuis la racine c ce qui donne en extrayant le fichier dans un répertoire :

    Zippeur/c_/temp/rep


    Alors que je souhaiterais :

    Zippeur/rep/...

    Des idées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
     
    public class Zippeur {
     
    	public static void main(String[] args) {
    		try 
    		{ 
    		    //create a ZipOutputStream to zip the data to 
    		    ZipOutputStream zos = new 
    		           ZipOutputStream(new FileOutputStream("c:\\temp\\zippeur.zip")); 
    		    //assuming that there is a directory named inFolder (If there 
    		    //isn't create one) in the same directory as the one the code
    		    //runs from, 
    		    //call the zipDir method 
    		    zipDir("c:\\temp\\rep", zos); 
    		    //close the stream 
    		    zos.close(); 
    		} 
    		catch(Exception e) 
    		{ 
    		    //handle exception 
    		} 
     
    	}
     
     
    //	here is the code for the method 
    	static void zipDir(String dir2zip, ZipOutputStream zos) 
    	{ 
    	    try 
    	   { 
    	        //create a new File object based on the directory we 
    	        //have to zip File    
    	           File zipDir = new File(dir2zip); 
    	        //get a listing of the directory content 
    	        String[] dirList = zipDir.list(); 
    	        byte[] readBuffer = new byte[2156]; 
    	        int bytesIn = 0; 
    	        //loop through dirList, and zip the files 
    	        for(int i=0; i<dirList.length; i++) 
    	        { 
    	            File f = new File(zipDir, dirList[i]); 
    	        if(f.isDirectory()) 
    	        { 
    	                //if the File object is a directory, call this 
    	                //function again to add its content recursively 
    	            String filePath = f.getPath(); 
    	            zipDir(filePath, zos); 
    	                //loop again 
    	            continue; 
    	        } 
    	            //if we reached here, the File object f was not 
    	            //a directory 
    	            //create a FileInputStream on top of f 
    	            FileInputStream fis = new FileInputStream(f); 
    	            //create a new zip entry 
    	        ZipEntry anEntry = new ZipEntry(f.getPath()); 
     
    	            //place the zip entry in the ZipOutputStream object 
    	        zos.putNextEntry(anEntry); 
    	            //now write the content of the file to the ZipOutputStream 
    	            while((bytesIn = fis.read(readBuffer)) != -1) 
    	            { 
    	                zos.write(readBuffer, 0, bytesIn); 
    	            } 
    	           //close the Stream 
    	           fis.close(); 
    	    } 
    	} 
    	catch(Exception e) 
    	{ 
    	    //handle exception 
    	} 
     
    }
    	}



    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    J'ai une solution en faisant au moment d'ajouter dans l'archive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZipEntry anEntry = new ZipEntry(f.getPath().substring(repertoire.length()));
    Mais est ce la bonne manière ?

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Pour faire ca j'ai utilise deux choses:

    Le path du rep sur le disque (je l'ai appele basedir)
    Le path d'un fichier dans l'archive (currentdir)

    currentdir = "" au depart

    Pour ajouter un fichier je fait un new ZipEntry(currentdir+ "/" + fichier)
    Attention au cas particulier du currentdir.equals("")

    Pour recuperer les fichiers et sous repertoires je fais un File.list() et suivant le cas soit j'ajoute un fichier soit j'ajoute le dir a currentdir

    Le path du fichier est basedir + "/" + currentdir + "/" + fichier

    Bon codage,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    ok, merci

  5. #5
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Par défaut
    pratique ce code ! avec les suggestions de bulbo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Zip] zipper un répertoire et son arborescence
    Par boriskov dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 14/08/2008, 13h46
  2. [Zip] Zipper plusieurs répertoires
    Par lelectronique.com dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/07/2008, 14h55
  3. Fichier 7 zip.zip
    Par pic16 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/12/2007, 14h02
  4. [Zip] Compression de répertoires
    Par LeXo dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 22/08/2007, 15h30
  5. [Zip] Zip d'images et galerie en php
    Par mereyj dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 06/04/2006, 21h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo