Bonjour,
Je suis en train de créer un application qui gère les fichiers .zip
Au début j'avais employé un algorithme trouvé sur le web assez long qui s'occupait de la compression et de la décompression.
Mais je me suis dis, pourquoi ne pas utiliser 7Zip qui peut se lancer par ligne de commande. Ca réduira la longueur du code et je pourrais utiliser la puissance du logiciel pour plus de fiabilité.
Je souhaite compresser un fichier.
Voici le simple 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 private static String sevenZip = "\"C:/Program Files/7-Zip/7z.exe\""; public static void compress(final File file, final File target) { String cmd = "cmd /c " + sevenZip + " a -tzip " + target + " " + file; System.out.println(cmd); try { Runtime.getRuntime().exec(cmd); }catch(Exception e) { System.out.println("erreur d'execution " + cmd + e.toString()); } }
Le problème :
J'utilise des chemins absolus.
Lorsque c'est un chemin simple et que la commande est du type :
ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "cmd /c "C:/Program Files/7-Zip/7z.exe" a -tzip C:\Users\MyDocuments\archive.zip C:\Users\MyDocuments\dossierAZipper"
Cependant reste un problème au niveau des espaces. Si la commande générer est du type :
ça me créera un dossier mon.zip donc ce n'est pas ce que je souhaite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "cmd /c "C:/Program Files/7-Zip/7z.exe" a -tzip C:\Users\MyDocuments\mon archive.zip C:\Users\MyDocuments\dossierAZipper"
Si je rajoute des doubles cotes de la manière suivante :
Ça ne fonctionne pas. Aucun zippage n'est effectué ! Il ne se passe rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part String cmd = "cmd /c " + sevenZip + " a -tzip \"" + target + "\" \"" + file + "\"";
Ce qui est étrange c'est que dans le DOS, lorsque j'exécute une commande du type :
Ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "C:/Program Files/7-Zip/7z.exe" a -tzip "C:/Users/MyDocuments/mon archive.zip" "C:/Users/MyDocuments/dossierAZipper"
Donc finalement je ne comprends pas pourquoi ça ne fonctionne pas lorsque je rajoute les doubles cotes ?
A noter que j'ai aussi remplacé '\' par '/', les résultats sont les même partout.
Une idée pour me permettre d'effectuer mes compressions ?
Partager