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

Java Discussion :

Probleme pour décompresser avec gzip


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 59
    Par défaut Probleme pour décompresser avec gzip
    Bonjour,

    J'ai un problème, je n'arrive pas à utiliser une commande unix pour décompresser une archive .gz

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void unzipFile(final File file, final boolean deleteZipAfter) throws IOException {
    		String zipName = "\"C:\\Program Files\\GnuWin32\\bin\\gzip.exe\" -d workspace_branche\\outil\\conf\\fichier.sql.gz";
     
    		try { 
    			System.out.println(zipName);
    			Runtime runtime = Runtime.getRuntime();
    			runtime.exec(new String[] {zipName});
    		} catch (Exception ex) {  
                ex.printStackTrace();  
            }  
    		if (deleteZipAfter)
    			file.delete();
    	}

    Ensuite voici mon message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    java.lang.IllegalArgumentException
    	at java.lang.ProcessImpl.<init>(Unknown Source)
    	at java.lang.ProcessImpl.start(Unknown Source)
    	at java.lang.ProcessBuilder.start(Unknown Source)
    	at java.lang.Runtime.exec(Unknown Source)
    	at java.lang.Runtime.exec(Unknown Source)
    	at util.file.FileTools.unzipFile(FileTools.java:37)
    	at util.file.FileTools.courseFolder(FileTools.java:20)
    	at util.file.FileTools.main(FileTools.java:56)

    et enfin ma ligne 37 corresponds à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    runtime.exec(new String[] {zipName});
    Je n'arrive pas à comprendre comment il faut procéder et je suis dans une impasse donc si on pouvait m'expliquer

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,

    C'est une mauvaise pratique d'embarquer en Java du code uniquement executable sur un OS, le jour où ton programme devra tourner sur une machine Unix ou Mac ce sera la cata. Tu peux très bien le faire uniquement en utilisant des fonctions Java, sans un programme externe, c'est expliqué ici

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 59
    Par défaut
    Merci pour ta réponse . j'ai essayé avec ce que j'ai trouvé et j'obtiens ce nouveau code :

    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
    public static void unzipFile(final File file, final boolean deleteZipAfter) throws IOException {
    		final int BUFFER = 2048;
    		byte data[] = new byte [BUFFER]; 
    	try{	
    		BufferedOutputStream dest = null;
    		FileInputStream fis = new FileInputStream ("C:\\Users\\msalles.ALALOOP\\workspace_branche\\outil\\conf\\fichier.sql.gz");
    		BufferedInputStream buffi = new BufferedInputStream (fis);
    		ZipInputStream zis = new ZipInputStream(buffi);
     
    		ZipEntry entry;
    		while((entry = zis.getNextEntry()) != null){
    			FileOutputStream fos = new FileOutputStream(entry.getName());
    			dest = new BufferedOutputStream(fos, BUFFER);
    			int count;
    			while ((count = zis.read(data, 0, BUFFER)) != -1){
    				dest.write(data, 0, count);
    			}
     
    			dest.flush();
    			dest.close();
    		}
    		zis.close();
    	} catch(Exception e) {
    		e.printStackTrace();
    	}
     
    		if (deleteZipAfter)
    			file.delete();
    	}
    Je n'ai pas d'erreur mais je n'ai pas d'archive décompressé. Est ce qu'il est décompressé quelque part en particulier ou est ce que je fais une erreur dans mon code ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 59
    Par défaut
    En faite j'ai testé avec un fichier .zip tout simple et en donnant le chemin absolu dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // création fichier
    FileOutputStream fos = new FileOutputStream("C:\\Users\\msalles.ALALOOP\\workspace_branche\\outil\\conf\\test");
    Et là ça marche bien . Maintenant je sais pas ce que je dois changer pour décompresser une archive .gz

  5. #5
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour,

    il suffit de bien googler "java gunzip"
    voici un exemple de code pour décompresser un fichier .gz
    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
     
    import java.util.zip.*;
    import java.io.*;
     
    ...
     
    public static String Unzip(String inFilePath) throws Exception
    {
        GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(inFilePath));
     
        String outFilePath = inFilePath.replace(".gz", "");
        OutputStream out = new FileOutputStream(outFilePath);
     
        byte[] buf = new byte[1024];
        int len;
        while ((len = gzipInputStream.read(buf)) > 0)
            out.write(buf, 0, len);
     
        gzipInputStream.close();
        out.close();
     
        new File(inFilePath).delete();
     
        return outFilePath;
    }
    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 59
    Par défaut
    Oui je viens de finir de googler aussi et ça marche . Merci pour l'aide

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

Discussions similaires

  1. probleme pour compiler avec netbeans en c++
    Par naskaa87 dans le forum NetBeans Platform
    Réponses: 1
    Dernier message: 31/08/2009, 09h58
  2. Probleme pour debuguer avec GDB un projet Qt
    Par phraides dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 07/07/2009, 10h09
  3. probleme pour compiler avec javac
    Par alexlevenere dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/05/2009, 11h20
  4. Problème pour debuter avec glut
    Par ismael14 dans le forum GLUT
    Réponses: 2
    Dernier message: 26/07/2004, 10h37

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