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 :

Quelle est pour vous la meilleure librairie ZIP ?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti

    Inscrit en
    Novembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 18
    Points : 440
    Points
    440
    Par défaut Quelle est pour vous la meilleure librairie ZIP ?
    Salut à tous,
    j'ai beaucoup de mal à trouver une bonne librairie ZIP ! Le package java.util.zip est inétressant mais il est impossible de réellement manipuler un fichier sans le recréer complètement ! Par exemple, si vous voulez ajouter ou supprimer une entry dans le Zip, lorsque vous ouvrez un ZipOutputStream votre ancien fichier est effacé ..; en gros on ne peut pas manipuler la structure du fichier (surtout ajout/suppression d'entry) sans supprimer le fichier et le recréer, ce qui en terme d'IO (je cherche des performances extrêmes !) est relativement important surtout sur des fichiers relativement gros de plusieurs Mo !

    Je sais qu'il existe des librairies en .NET ou autre qui permettent de faire des opérations en live sur les fichiers Zip, donc pourquoi pas en Java :p

    Si quelqu'un a des infos, je le remercie d'avance !!!!

    ++

    Julien

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 927
    Points
    22 927
    Billets dans le blog
    53
    Par défaut
    Moi ce qui m'embete surtout avec l'API ZIP et JAR fournie c'est qu'on soit oblige de passer par des Entry et tout un tas de classes de flux specialises alors qu'il aurait tellement ete plus simple de pouvoir utiliser une API de type... File (ou des URL/URI a la limite pourquoi pas) et des flux standards et ainsi acceder aux fichiers contenus dans l'archive comme s'ils etaient... dans un systeme de fichier normal, bref, quelque chose qui aurai permis de manipuler tout ca de maniere bien plus transparente. Un mauvais point pour la conception de l'API donc.

    Apres je ne fais que de la lecture ou de l'archivage en bloc, pas de mofications apres creation de l'archive donc les performances IO me genent moins.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par bouye
    il aurait tellement ete plus simple de pouvoir utiliser une API de type... File (ou des URL/URI a la limite pourquoi pas)
    C'est possible en utilisant les URL de type jar: comme lorsque tu accèdes aux ressources du CLASSPATH. Par exemple pour récupérer une URL vers un fichier à l'intérieur d'une archive tu peux utiliser une méthode du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public static URL getUrlToPathInArchive(File archive, String path) {
            try {
                return new URL("jar:" + archive.toURI() + "!" + path);
            } catch (MalformedURLException e) {
                // Ne devrais pas arriver :
                throw new RuntimeException(e);
            }        
        }
    Cela fonctionne aussi bien pour les jar que pour les zip



    Citation Envoyé par julien_chable
    Je sais qu'il existe des librairies en .NET ou autre qui permettent de faire des opérations en live sur les fichiers Zip, donc pourquoi pas en Java :p
    Ces API se contente de "cacher" cela car il me semble qu'il est impossible de modifier "en live" une archive zip. Il y a deux solutions :
    • Créer un fichier temporaire sur le système de fichier, qui remplacera l'original à la fin du traitement.
    • Créer un fichier temporaire dans la mémoire vive, qui écrasera le fichier original à la fin du traitement.

    a++

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 927
    Points
    22 927
    Billets dans le blog
    53
    Par défaut
    Citation Envoyé par adiGuba
    C'est possible en utilisant les URL de type jar: comme lorsque tu accèdes aux ressources du CLASSPATH. Par exemple pour récupérer une URL vers un fichier à l'intérieur d'une archive tu peux utiliser une méthode du style :
    [...]
    Cela fonctionne aussi bien pour les jar que pour les zip
    Pour la creation et la modification bien sur...
    argh je ne suis jamais assez précis dans mes explications moi...

    Globalement il manque une API genre PluggableFileSystem qui aurait permis de pouvoir monter des systemes de fichiers contenus dans des archives (ZIP, TAR, JAR, GZ, Z, RAR, ARJ, ...), dans des images (ISO, NRG, ...), des protocole de partage de fichier (NFS, SMB, ...), voir même d'autres types de partitions (encore que pour cette dernière option ca demanderai probablement une intégration avec du JNI) a l'endroit ou on veut (sur le fichier lui-même pour les archives par exemple) pour pouvoir manipuler leur contenu de manière transparente tout en utilisant le package/API java.io/java.nio habituel. Les méthodes actuelles (et les nouvelles de Java 6) de la classe File sont suffisantes pour déterminer si on peut écrire dans l'archive/image/share/partition montée ; pour le reste il y a également suffisamment d'IOException et de SecurityException (quand on a besoin de s’authentifier pour accéder au contenu) pour gérer la plupart des interdictions et des erreurs je crois. Bref, quelques chose de similaire au mount disponible depuis longtemps sous UN*X tout simplement (étonnant que Sun n'y ai pas pensé).

    Évidement c'est le genre de choses pour lesquelles Sun peut fournir le strict minimum (les classes de base pour JAR et ZIP existent déjà ; il faudrait juste faire un bridge/adapter vers la nouvelle API) et laisser les gens développer leur propres libs pour le reste.

    Quelqu'un y aura forcement déjà songe, JSR ou es-tu ????

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Depuis il y a eu de l'évolution
    Faut regarder du coté de TrueZip !!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Effectivement TrueZip permet de parcourir le contenu des archives comme s'il s'agissait de répertoires, de mettre à jour les archives. En revanche, cette librairie n'est plus, il me semble, mise à jour.
    Et même si la librairie permet en théorie de rajouter des drivers pour supporter divers types d'archives, la documentation est plutôt courte sur le sujet...

    Donc difficile d'y inclure un driver pour les fichiers rar ou autres 7zip

    Enfin, si vous avez des connaissances sur le sujet je suis preneur

  7. #7
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Citation Envoyé par bouye Voir le message
    Globalement il manque une API genre PluggableFileSystem qui aurait permis de pouvoir monter des systemes de fichiers contenus dans des archives (ZIP, TAR, JAR, GZ, Z, RAR, ARJ, ...), dans des images (ISO, NRG, ...), des protocole de partage de fichier (NFS, SMB, ...), voir même d'autres types de partitions
    Ca existe déja (en partie) : http://commons.apache.org/vfs/.

    Cordialement

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Je ne connaissais pas cette lib. Effectivement ça a l'air de faire un peu la même chose que TrueZip, mais avec les avantages que c'est Apache (donc un peu plus suivi que TrueZip qui est arreté) et que c'est extensible au iso et à tout un tas de trucs
    Malheureusement pas de support pour 7-zip non plus

  9. #9
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Le but d'une API open source est aussi de pouvoir y contribuer.
    Félicitations à toi, dans quelques semaines nous utiliserons la dernière version de commons-VFS pour travailler sur des fichiers 7-ZIP

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Oui quand j'aurai réussi à comprendre le JDK SevenZip qui n'est pas d'une simplicité extreme vu qu'il n'est pas trop documenté :p

Discussions similaires

  1. Quel est pour vous le meilleur éditeur xml ?
    Par neo.51 dans le forum XML/XSL et SOAP
    Réponses: 87
    Dernier message: 20/02/2010, 21h04
  2. Réponses: 12
    Dernier message: 18/08/2009, 19h12
  3. Réponses: 2
    Dernier message: 15/08/2009, 02h51
  4. Quel est selon vous le meilleur AV du marché ?
    Par lavazavio dans le forum Sécurité
    Réponses: 6
    Dernier message: 10/10/2005, 09h30

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