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 :

[Fichier Zip] Comment zipper un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut [Fichier Zip] Comment zipper un fichier
    Bonjour je voudrai zippé un fichier pdf et xml et je voudrai savoir commment on fait. J'ai vu qu'il existait une classe Java Zipfile mais je ne comprends pas comment elle marche.
    Merci.

  2. #2
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    voici un code qui permet la sauvegarde d'un répertoire (et de tous ses sous répertoire) dans un zip de nom "zipName" :
    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
     
        private void save(String zipName) {
    	try {
    	    ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zipName)); 
    	    zip.setMethod(ZipOutputStream.DEFLATED); 
    	    zip.setLevel(Deflater.BEST_COMPRESSION);
     
    	    File dataDirectories = new File(Chemin du répertoire ou du fichier);
    	    zipDirectory(dataDirectories, zip);
    	    zip.close();
    	} catch (FileNotFoundException fileNotFound) {}
    	catch (IOException io) {}
        }
     
        private void zipDirectory(File directory, ZipOutputStream zip) {
    	String[] listFile = directory.list();
    	for (int i = 0; i < listFile.length; i++) {
    	    try {
    		File file = new File(directory.getPath()+"/"+listFile[i]);
    		if (file.isDirectory()) zipDirectory(file, zip);
    		else {
    		    FileInputStream in = new FileInputStream(file);
    		    byte[] bytes = new byte[in.available()];
    		    in.read(bytes);
    		    in.close();
     
    		    ZipEntry entry = new ZipEntry(file.getPath());
    		    entry.setTime(file.lastModified());
    		    zip.putNextEntry(entry);
    		    zip.write(bytes);
    		    zip.closeEntry();
    		}
    	    } catch (FileNotFoundException fileNotFound) {}
    	    catch (IOException io) {}
    	}
        }
    la plupart des classes utilisées sont dans le package java.util.zip, et autre java.io

    voila en espérant que cela t'aide.
    et tu me demanderas bientot mais pour dézipper et bah voila la suite :
    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
     
        private void load(String zipName) {
    	try {	    
    	    deleteAllFiles(new File(chemin de ton ancien rep ou fichier));
     
    	    ZipFile zipFile = new ZipFile(zipName);
    	    Enumeration entries = zipFile.entries();
    	    ZipEntry entry;
    	    File file;
     
    	    while (entries.hasMoreElements()) {
    		entry = (ZipEntry) entries.nextElement();
    		file = new File(entry.getName());
    		file.getParentFile().mkdir();
    		int i = 0;
    		byte[] bytes = new byte[1024];
    		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
    		BufferedInputStream in = new BufferedInputStream(zipFile.getInputStream(entry));
    		while((i = in.read(bytes)) != -1)
    		    out.write(bytes,0,i);
     
    		in.close();
    		out.flush();
    		out.close();
    	    }
    	    zipFile.close();
    	} catch (FileNotFoundException fileNotFound) {}
    	catch (IOException io) {}
        }
     
        private void deleteAllFiles(File directory) {
    	String[] listFile = directory.list();
    	for (int i = 0; i < listFile.length; i++) {
    	    File file = new File(directory.getPath()+"/"+listFile[i]);
    	    if (file.isDirectory()) deleteAllFiles(file);
    	    else if (file.exists()) file.delete();
    	}
        }
    je fais juste un effacage de l'ancien repertoire au début pour éviter tout ecrasement etc...je prefere effacer c plus direct

    voila

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Ok merci bcp. Je vais tout de suite essayer ça.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Finalement
    Voilà le code pour zippé un simple fichier.
    La méthode prend en paramètre le nom du fichier zip final et l'url de fichier à zippé.
    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
    private void save(String zipName, String urlfich) {
    		try {
    			ZipOutputStream zip =
    				new ZipOutputStream(new FileOutputStream(zipName));
    			zip.setMethod(ZipOutputStream.DEFLATED);
    			zip.setLevel(Deflater.BEST_COMPRESSION);
    			File dataDirectories = new File(urlfich);
    			FileInputStream fis = new FileInputStream(dataDirectories);
    			byte[] bytes = new byte[fis.available()];
    			fis.read(bytes);
     
    			ZipEntry entry = new ZipEntry(urlfich);
    			entry.setTime(dataDirectories.lastModified());
    			zip.putNextEntry(entry);
    			zip.write(bytes);
    			zip.closeEntry();
    			fis.close();
    			//zipDirectory(dataDirectories, zip);
    			zip.close();
    		} catch (FileNotFoundException fileNotFound) {
    		} catch (IOException io) {
    		}
    	}
    En tout cas merci bcp pr ton aide!!!

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

Discussions similaires

  1. Comment créer un fichier zip à l'aide de Delphi ?
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 29/11/2018, 16h21
  2. [Fichier Zip] Comment zipper un dossier
    Par OsTaLaKaR dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/11/2010, 12h25
  3. Comment créer un fichier ZIP ?
    Par MALAGASY dans le forum Framework .NET
    Réponses: 7
    Dernier message: 26/09/2006, 09h15
  4. [Zip] comment compresser un fichier en php?
    Par zana74 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 24/08/2006, 10h05
  5. [Abrevia] Comment zipper un fichier sans inclure son répertoire ?
    Par DelphiSteph dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/02/2005, 20h01

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