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 :

Analyser le contenu d'un fichier ZIP


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Analyser le contenu d'un fichier ZIP
    Bonjour,

    Je suis débutant en programmation JAVA, et j'ai du mal sur un programme.
    Le but du programme est de lire un sous-fichier bien spécifique d'un fichier ZIP qui pourrais très bien contenir un ou plusieurs sous-fichiers (txt, xml, odt....) ensemble.
    L'idéal serait de lire sous-fichier sans décompresser le fichier ZIP.

    Merci de vos aides.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,juste en tapant sur google tu trouve plein de chose. Ou voir les tutoriels sur Développez.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Kevin254kl, j'ai deja regardé plein de programme sur le net mais aucun ne correspond vraiment.

    Peut etre que j'ai mal exprimé mon problème aussi...
    Voila, j'ai un fichier ZIP (rapport) qui comprends plusieurs fichiers(niveau1.txt, niveau2.txt, cont.xml, stade.odt...) mais moi je ne veut récupérer que le cont.xml.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La classe ZipFile permet d'avoir la liste des fichiers contenus dans le zip, des instances de ZipEntry, dont on peut obtenir une énumération par zipFile.entries(). Ensuite, il suffit de parcourir cette énumération, pour cherche la ZipEntry qui t'intéresse, puis en obtenir un InputStream par zipFile.getInputStream(zipEntry), ce qui te permet d'extraire uniquement ce fichier de la même manière que tu traiterais n'importe quel InputStream.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    À noter que depuis Java 1.7 et ses FileSystem, il y a moyen de faire bien plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    String zipName = "fichier.zip";
    String filenameInZip = "fichier.txt";
     
    try(FileSystem zip = FileSystems.newFileSystem(Paths.get(zipName), null)) {
     
      Path fileInZip = zip.getPath(filenameInZip);
     
      // et là on utilise fileInZip, un Path qui pointe vers un fichier dans le zip,
      // comme on utiliserait un Path qui pointe vers un fichier normal :
      try(Stream<String> lines = Files.lines(fileInZip, StandardCharsets.UTF_8)) {
        lines.forEach(System.out::println);
      }
     
    }
    Ça évite :
    - de se taper soi-même le parcours vers le fichier qui nous intéresse,
    - de traiter le "fichier dans un fichier" autrement qu'on traiterait un fichier normal.

    Attention quand même, ici newFileSystem() auto-détecte que le fichier est un .zip et qu'il doit l'ouvrir comme un zip. Il pourrait auto-détecter un autre format de fichier sans le rejeter et sans faire d'erreur.
    Par conséquent, il ne faut utiliser cette méthode que quand le .zip vient d'une source de confiance (il fait partie du programme, il est envoyé par un partenaire qui n'a aucun intérêt à pirater le programme, etc) et pas de n'importe qui sur Internet.

    Dans le cas où le zip ne vient pas d'une personne de confiance, on préférera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URI zipURI = URI.create("jar:" + Paths.get(zipName).toUri());
    try(FileSystem zip = FileSystems.newFileSystem(zipURI, Collections.emptyMap())) {
    Dans lequel le préfixe "jar:" impose d'utiliser un dézippeur et d'échouer sur les autres formats.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ah, oui, c'est bien ça. Je ne savais pas qu'on pouvait utiliser FileSystems pour accéder à un Zip (faut dire que je bosse toujours en 1.5, donc pas beaucoup d'occasions de voir tout ce qu'il y à voir dans les versions ultérieures).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Heu.....
    Excusez ma réponse, mais j'y comprend pas grand choses, et dans la plus par des code que j'ai trouvé par le passé on pouvait définir un dossier de destination...
    j'avoue que je suis baladé

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Un "dossier de destination"... Je croyais que tu ne voulais pas décompresser le zip ?

    Concrètement, tu veux faire quoi ? Tu as dit que tu voulais "lire" un fichier dans un zip. Mon programme fait exactement ça. Que manque-t-il ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Un "dossier de destination"... Je croyais que tu ne voulais pas décompresser le zip ?

    Concrètement, tu veux faire quoi ? Tu as dit que tu voulais "lire" un fichier dans un zip. Mon programme fait exactement ça. Que manque-t-il ?
    Bonjour,

    je voudrais juste le récupérer (cont.xml par exemple), pas le lire...

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Extraire le fichier du zip revient en quelque sorte à le copier, du zip vers un dossier de destination : que cela soit à partir d'un InputStream ou d'un Path, la méthode Files.copy() (le lien est vers la version avec Path en entrée et Path en sortie...voir les autres variantes à côté dans la javadoc) te permettra de copier un fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Extraire le fichier du zip revient en quelque sorte à le copier, du zip vers un dossier de destination : que cela soit à partir d'un InputStream ou d'un Path, la méthode Files.copy() (le lien est vers la version avec Path en entrée et Path en sortie...voir les autres variantes à côté dans la javadoc) te permettra de copier un fichier.
    D'accord, je vais essayé avec File.copy()

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Points : 17
    Points
    17
    Par défaut bonjour tt le monde
    Moi aussi , j' ai le meme probleme aussi, je veux recuperer un fichier xml dans un zip. je ne sais pas vraiment comment le faire. Si vous avez une solution, je suis prenant. merci

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour lire un "fichier" dans un fichier zip, on peut utiliser soit un ZipInputStream, soit un ZipFile. Avec ZipFile, et sa méthode getEntry(name), tu pourras plus facilement accèder à ton xml. Attention, un fichier zip ne contient pas de fichiers, mais des entrées (entry en anglais) : le nom n'est donc pas un chemin de fichier mais un chemin d'entrée (donc toujours avec des /, quelque soit l'OS, et relatif par rapport à l'emplacement zippé à l'origine). Ensuite, une entrée (classe ZipEntry) te permet d'obtenir un InputStream (ZipFile.getInputStream(ZipEntry)). Et donc tu te retrouves dans la même situation que si tu lisais directement un fichier xml quand tu crées un FileInputStream par exemple.

    Ensuite tout dépend ce que tu entends par récupérer ? Si tu veux obtenir au final un fichier xml sur ton disque, j'ai indiqué ci-dessus (message 10). Si tu veux le lire, pour le traiter, et bien ça dépend si tu veux f'exploiter en DOM, SAX, StAX... mais quelque soit ce que tu utiliseras pour le lire et le parser, traiter le InputStream obtenu par la ZipEntry est exactement la même chose que pour traiter un InputStream obtenu à partir d'un fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Bonsoir Joel
    Merci pour ta reponse Joel.
    Ce que je souhaite vraiment c' est d' extraire dans le fichier zip le fichier xml. C est a dire, faire une copie du fichier xml et le mettre dans un autre répertoire. Apres l' avoir recuperé, je le traite avec DOMPARSER.

    Je veux le traiter du coup il faut que je le recupere ou faire une copie et le mettre dans un autre repertoire.

    Si tu as une idée, je suis toujours prenant. Merci beaucoup.

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est quoi DOMPARSER ? Une API Java, genre JDOM ? Si oui, inutile d'en faire un fichier. Tu peux directement lire le flux de l'entrée correspondante au fichier XML dans le fichier ZIP, sans créer un fichier inutile. Sinon (si ce n'est pas une API Java), pourquoi ? Et si ce n'est pas une API Java capable de traiter un InputStream, oublie-la, et prend JDOM2.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Bonsoir Joel
    Merci pour ta reponse.
    Le Dom parser je voulais dire, c' est comme le sax parser.
    Il permet de traiter un fichier xml.
    Mon probleme ce que le fichier xml se trouve dans un zip, et je ne sais pas comment le faire. Je pense qu' il faut d abord faire une copie de ce fichier xml et le mettre a quelque part avant de le traiter. Si comme on decompresse le zip d' abord, on recupere le fichier et on fait le traitement. Ou, est ce que je peut le traiter directement sans decompresser le zip?
    Merci

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sangdou Voir le message
    Ou, est ce que je peut le traiter directement sans decompresser le zip?
    Oui ! C'est ce que je dis depuis le début, et c'est déjà ce qui était dit dans la discussion originale !

    Pour lire un document à partir d'un inputstream, en jdom2, par exemple, on fait, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static Document load(InputStream inputStream) throws JDOMException, IOException {
        SAXBuilder saxbuilder = new SAXBuilder();
        return saxbuilder.build(inputStream);
    }
    Méthode que tu peux appeler pour un file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Document load(File file) throws JDOMException, IOException  {
        try(InputStream inputStream = new FileInputStream(file)) {
            return load(inputStream);
        }
    }
    Et donc pour fichier dans un zip, avec ZipFile par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static Document load(File zipfile, String name) throws JDOMException, IOException  {
        try(ZipFile zipFile = new ZipFile(zipfile)) {
            ZipEntry zipEntry = zipFile.getEntry(name);
            if ( zipEntry==null ) throw new FileNotFoundException(zipFile.getName()+"!"+name);
            try(InputStream inputStream = zipFile.getInputStream(zipEntry)) {
                return load(inputStream);
            }
        }
    }
    Tu mets ces méthodes dans une classe par exemple ZipUtils

    Et tu faire comme ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static void main(String[] args) {
        try {
            Document doc = load(new File("fichier.zip"),"fichier.xml");
            System.out.println(doc.getRootElement().getName());
        } catch (JDOMException | IOException e) {
            e.printStackTrace();
        }
    }
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static void main(String[] args) {
        try {
            Document doc = ZipUtils.load(new File("dossier.zip"),"dossier/fichier.xml");
            System.out.println(doc.getRootElement().getName());
        } catch (JDOMException | IOException e) {
            e.printStackTrace();
        }
    }
    Si tu n'arrive pas à déterminer le nom de l'entrée, tu peux utiliser cette méthode pour afficher tous les noms d'entrées du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void print(File zipfile) throws JDOMException, IOException  {
        try(ZipFile zipFile = new ZipFile(zipfile)) {
            Collections.list(zipFile.entries()).forEach(System.out::println);;
        }
    }
    On peut aussi faire une méthode qui cherche le fichier dans le zip, quel que soit le dossier :
    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 Document find(File zipfile, String name) throws JDOMException, IOException  {
        try(ZipFile zipFile = new ZipFile(zipfile)) {
            List<ZipEntry> zipEntries = Collections.list(zipFile.entries())
    					.stream()
    					.filter(entry->entry.getName().endsWith("/"+name))
    					.collect(Collectors.toList());
    	if( zipEntries.isEmpty() ) throw new FileNotFoundException(zipFile.getName()+"!*/"+name);
    	if ( zipEntries.size()>1 ) throw new IOException("Several files found...");
    	try(InputStream inputStream = zipFile.getInputStream(zipEntries.get(0))) {
    	    return load(inputStream);
    	}
       }
    }
    Document doc = ZipUtils.find(new File("dossier.zip"),"fichier.xml");
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Merci Joel
    Merci Joel.
    C' est bien clair.
    C' est bien détaillé en plus;
    Merci encore

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Bonjour Joel
    J' ai utilisé ton 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
    30
    31
    32
    33
    package hh;
     
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
     
    import org.w3c.dom.Document;
     
    public class ZipUtils {
     
    	public static Document load(File zipfile, String name) throws JDOMException, IOException  {
    	    try(ZipFile zipFile = new ZipFile(zipfile)) {
    	        ZipEntry zipEntry = zipFile.getEntry(name);
    	        if ( zipEntry==null ) throw new FileNotFoundException(zipFile.getName()+"!"+name);
    	        try(InputStream inputStream = zipFile.getInputStream(zipEntry)) {
    	            return load(inputStream);
    	        }
    	    }
    	}
     
    	public static void main(String[] args) {
     
     
    		    try {
    		        Document doc = load(new File("fichier.zip"),"fichier.xml");
    		        System.out.println(doc.getRootElement().getName());
    		    } catch (JDOMException | IOException e) {
    		        e.printStackTrace();
    		    }
    		}}
    Par contre, il trouve pas la load ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return load(inputStream);
    ainsi que getRootElement() ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println(doc.getRootElement().getName());
    Merci de ton aide .

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sangdou Voir le message
    Par contre, il trouve pas la load ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return load(inputStream);
    ainsi que getRootElement() ==> [CODE]
    Bah, forcément si tu ne mets pas la méthode dans la classe, il ne risque pas de la trouver (c'est la première dans mon message).

    Citation Envoyé par sangdou Voir le message
    ainsi que getRootElement() ==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.w3c.dom.Document;
    J'ai dit que c'était un exemple avec JDOM2 !!! Une API beaucoup plus pratique que l'API DOM Java du JDK.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/12/2013, 16h36
  2. Réponses: 8
    Dernier message: 24/11/2008, 14h29
  3. Lister le contenu d'un fichier zip
    Par DJBORIE dans le forum Access
    Réponses: 3
    Dernier message: 30/03/2007, 16h01
  4. [Zip] Afficher une image contenue dans un fichier zip
    Par Mister Nono dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/03/2007, 09h59
  5. lister le contenu d'un fichier zip.
    Par rico3434 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 01/11/2005, 18h14

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