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 :

Lister le contenu d'un répertoire dans un jar


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java/GWT
    Inscrit en
    Juillet 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java/GWT
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 32
    Par défaut Lister le contenu d'un répertoire dans un jar
    Salut, mon applet est dans un jar et je dois lister les images contenues dans l'un des répertoires de ce même jar. J'ai essayé avec ça, mais sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    File dir = new File(getClass().getResource("").getPath());
    if(dir != null){
    	FilenameFilter filter = new FilenameFilter() {
    		public boolean accept(File dir, String name) {
    			return name.endsWith(".png") || name.endsWith(".gif") || name.endsWith(".jpg");
    		}
    	};
    	String[] filesList= dir.list(filter);
    	if (filesList!= null) {
    		for (int i = 0; i < filesList.length; i++) {
    			m_bufImageIcon.put(filesList[i], new ImageIcon(getInstance().getClass().getResource(filesList[i])));
    		}
    	}
    }
    Le problème vient du fait que "dir" n'est pas un répertoire valide: ("http://monip:monport/monprojet/monapplet.jar!/unrepertoire/lerepertoirequejeveux/")

    Donc la question que je me pose, comment faire pour lister mes images?

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Tu peux utiliser la classe JarFile qui te renverra la liste de toutes les entrées contenues dans le Jar.

    http://java.sun.com/javase/6/docs/api/index.html.

    La méthode #getEntries() te renverra une enumeration d'entrées. A partir de là, tu fais le tri dans ce que tu veux ou non, en triant avec JarEntry#getName().

    C'est pas la meilleure méthode, dans le sens ou tu trieras parmi TOUS les fichiers contenus dans le Jar, et non pas dans un répertoire spécifique du Jar.

    Mais c'est une première méthode, si t'as des soucis de perf, faudra penser à quelque chose d'autre.

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Salut,
    je préfère toujours lister les images dans un fichiers xml contenu dans le dossier où se trouve les images. Comme ça quand il s'agit de lister les images du répertoire, je parse le fichier xml et récupère toutes les images qui s'y trouvent.

    Voici le code que j'utilise tres souvent :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    import java.io.File;
    import java.io.FileWriter;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
     
    public class Main
    {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args)
        {
           if(args.length<1)
           {
             System.out.println("argument error");
             System.exit(0);
           }
     
           File file= new File(args[0]);
           String[] img=file.list();
     
           try
           {
            DocumentBuilderFactory fact= DocumentBuilderFactory.newInstance();
            DocumentBuilder builder= fact.newDocumentBuilder();
            Document doc= builder.newDocument();
            Element racine=doc.createElement("images");
     
            doc.appendChild(racine);
     
            for(int i=0; i<img.length; i++)
            {
             Element ele=doc.createElement("img");
             ele.setTextContent(img[i]);
             racine.appendChild(ele);
            }
     
            enregistrer("image.xml", doc);
     
           }
           catch(Exception e)
           {
            e.printStackTrace();
           }
        }
     
     
     
        public static void enregistrer(String path, Document doc) throws Exception
        {
            TransformerFactory tfact =  TransformerFactory.newInstance();
             Transformer transformer =  tfact.newTransformer();
             DOMSource source = new DOMSource(doc);
             File fichier= new File(path);
     
             FileWriter fw = new FileWriter(fichier);
     
     
             StreamResult result = new StreamResult(fw);
             transformer.transform(source, result);
        }
     
    }

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    S'ajouter une étape de génération de fichier XML alors que l'on peut le faire programmatiquement et dynamiquement, je ne vois pas personnellement pas vraiment l'avantage et l'intérêt, surtout que l'on s'ajoute une étape de parsing XML. A moins que je ne passe à côté...

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Citation Envoyé par ipingu Voir le message
    surtout que l'on s'ajoute une étape de parsing XML. A moins que je ne passe à côté...
    L'etape de parsing du xml? c'est le parseur qui s'en occupe et ça se fait dans le programme pas à la main. En plus je crois, ta methode ne sera pas toujours tres rapide surtout si le jar contient un max de fichiers, les lister puis les trier prendra surement un temps fou.

  6. #6
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Pour ce qui est des perfs, je te rejoins la-dessus, la méthode que j'ai proposée n'est pas ce qu'il y a de plus optimisé. Mais l'importance de l'optimisation dépend du cadre d'utilisation. S'il appelle souvent cette méthode, il suffit de stocker la liste de fichiers en mémoire, une fois triée.

    Ce que je voulais dire surtout, c'est que le XML n'est pas toujours la bonne solution, un fichier CSV aurait pu l'affaire pour la solution que tu utilises.

Discussions similaires

  1. Lister le contenu d'un répertoire dans un Jlist ou JTable
    Par the watcher dans le forum Composants
    Réponses: 6
    Dernier message: 08/04/2010, 12h38
  2. Lister le contenu d'un répertoire présent dans le classpath
    Par kaptainflam dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2007, 16h08
  3. Lister le contenu d'un dossier dans une ListBox
    Par zidenne dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2005, 12h51
  4. Lister le contenu d'un répertoire
    Par rob_57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/10/2005, 19h16
  5. Lister le contenu d'un répertoire distant
    Par dody dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 17h23

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