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 :

Ouvrir un Fichier dans un Archive ZIP


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Ouvrir un Fichier dans un Archive ZIP
    Salut tout le monde,
    actuellement je suis entrain de developper une api et parmi les fonctionnalités que je dois developper c'est de verifier l'existance des repertoires "Code/" et "Data/" et puis si les deux repertoires existe je dois ouvrir le fichier XML qui se trouve dans le reprtoire "Data/" Toutes ces operations doivent etre réaliser sans la decompression l'archive .

    pour l'instant j'ai reuissi à faire la verification des deux repertoires par contre je sais pas comment je vais ouvrir le fichier XML qui e trouve dans "Data/" Dans si qlq un entre vous c'est comment le faire je serais tres recaonnaissant.


    voici un petit bou du code que j'ai developpé pour verifier les deux Rep


    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
     
    try {
     
                 ZipFile zf = new ZipFile("C:/WORK/archive.zip");
            	Enumeration<?> entries = zf.entries();
    			while (entries.hasMoreElements()) {
                	ZipEntry e = ((ZipEntry)entries.nextElement());
                	if((e.getName().contains("Code")==true)|| (e.getName().contains("Data")==true)){
                		cp=cp+1;
                	}
    			}
    			if (cp==2){
     
    				System.out.println("Debut d'algorithme");  // c'est la ou je dois faire mon traitement :/
    			}
    			else{
     
    				logger.debug("Directory MISSING");
    			}
     
    		}
    			catch(Exception e) {
    			e.printStackTrace();
    		}
    	}



    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    La méthode "getInputStream(ZipEntry entry)" de la classe "ZipFile" te permet d'obtenir un flux sur un fichier.
    Par contre, évite d'utiliser "<?>", ça t'oblige à caster et tu perds tout le bénéfice des generics...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Bonsoir, c'est super de lire le flux du ton fichier, mais si tu veux l'ouvrir, je pense qu'il va te falloir passer par le disque dur ... regarde winrar quand tu ouvres sans décompresser ça décompresse quand même le fichier dans un répertoire temporaire.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Tout d'abord je tiens a vous remercie de vos réponses .et je vous demande s'il y a pas un moyen de verifier si un ZipEntry est un Repertoire oubien un Fichier .

    parceque la du coup je viens de voir que mon ancien code il est pas assez general pour n'importe qu'elle type d'archive.

    La structure de mon Archive est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Root/
          +Data/
                 data.xml
          +Code/
    et la je dois réaliser une classe qui verifie si mon archive *.zip contient les repertoire "Data/" et "Code/"

    s'il existe je dois pouvoir ouvrir le fichier data.xml qui se trouve dans le repertoire "Data/"

    j'espere que j'etais assez clair . j'attend vos suggestions

    Merci bcq

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    En lisant la javadoc, tu peux trouver la merveilleuse méthode "isDirectory()" dans la classe "ZipEntry". Et quelle en est la description ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Returns true if this is a directory entry. A directory entry is defined to be one whose name ends with a '/'.
    Génial
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Exactement je l'ai fais et il y a pas de soucci . par contre je vois tjrs pas comment je vais lire le fichie data.xml qui se trouve dans le repertoire "Data/".


    pour l'instant j'ai réaliser une petite fonction qui li le flux du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    System.out.println("Debut du Parsing");
     
    Enumeration<?> entry = zf.entries();
        while (entry.hasMoreElements()) {
             ZipEntry ze = ((ZipEntry)entry.nextElement());
    	 if(ze.isDirectory()==false){
    	        System.out.println(ze.getName());
    	        this.readFile(ze.getName());            			
    	 }         			
    }
    et readFile c'est une methode classique qui lit un flux .

    et quand je fais this.readFile(ze.getName()); mon programme n'a pas pu accedez au fichier data.xml qui se trouve dans mon archive .

    java.lang.NullPointerException
    at Test.readFile(Test.java:64)
    at Test.<init>(Test.java:35)
    at Test.main(Test.java:76)

    si qlq1 à une idée je serais reconnaissant

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    C'est normal. C'est l'objet ZipFile qui s'occupe de lire le flux, via un ZipEntry.
    Donc ta méthode "this.readFile" doit prendre un paramètre supplémentaire : l'instance de ZipFile. Et dans ta méthode tu fais un "zf.getInputStream( ze )".
    Lis la Javadoc pour ZipFile !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Ajouter un fichier dans une archive zip existante
    Par dawadam dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/05/2010, 13h19
  2. java.util.zip chemin des fichiers dans l'archive ZIP
    Par Bubu017 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 15/04/2008, 18h36
  3. créer une arborescence de dossiers et de fichiers dans un archive zip
    Par khaldoune_inf dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/06/2007, 00h30
  4. Lecture d'un fichier dans un archive '.zip'
    Par Ja_buzz dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2006, 17h14
  5. [C#] [WinForms] Lecture d'un fichier dans une archive ZIP
    Par aegypius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2004, 18h15

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