Comment lister les fichiers d'un répertoire dans un jar ?? [Résolu]

thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 mai 2006 à 10:01 - Dernière réponse : thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention
- 18 mai 2006 à 22:49
Bonjour à tous !!

Dans mon appli, j'ai une partie de mon code qui me permet de lister les fichier texte d'un répertoire, et de lire le contenu de chacun de ces fichiers, comme l'illustre l'exemple ci-dessous :


/**
 * Méthode permettant de lire la 1ère ligne de chaque fichier du répertoire voulu.
 */


private static void
lireContenuFichiers(String repertoire)
{
   File dir = new File(repertoire);
   // on liste ici les fichiers du répertoire voulu :
   String[] tableauFichiers = dir.list(filtreFichiers);

    for (int i =0 ; i<tableauFichiers.length ; i++)
   {
      BufferedReader input = null;
       try {
         input = new BufferedReader(RessourceLocator.getReaderRessource(repertoire + "/" + tableauFichiers[i]));
         // lecture de la 1ère ligne du fichier courant :
         String ligneDuFichier = input.readLine();
      }
       catch (IOException e) {
         e.printStackTrace();
      }
      finally {
         try {
            if (input ! = null)
               input.close();
         }
         catch (IOException e) {
            e.printStackTrace();
         }
      }
   }

}




/**
 * Filtre permettant de ne récupérer que les fichiers du type '*.txt'
 */


static
FilenameFilter filtreFichiers = new FilenameFilter() {
   public boolean accept(File fichier, String name)
   {
      return (name.endsWith(".txt") || (name.endsWith(".TXT")));
   }
};

Ce code marche très bien tant que je reste sous Eclipse. Mais je souhaiterais savoir s'il est possible d'effectuer le même traitement (lister les fichiers d'un répertoire) une fois l'appli exportée dans un Jar exécutable, sachant que mes fichiers texte et répertoires se trouvent également dans ce jar....

Il faut probablement faire quelque chose avec ClassLoader, mais je ne vois pas comment...

Merci par avance pour vos suggestions et votre aide !!
 
Afficher la suite 

7 réponses

Répondre au sujet
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 18 mai 2006 à 21:31
+3
Utile
Salut,

voici un exemple de comment lister le contenu d'un jar (meme celui qui tourne)

ZipFile zipFile;
try {
    zipFile = new ZipFile("nomDuJar.jar");
    Enumeration e = zipFile.entries();
    while (e.hasMoreElements()) {
         ZipEntry ze = (ZipEntry) e.nextElement();
         //petite manipe pour crosoft
         sizes.put(ze.getName().replace('\\', '/'), new Integer((int) ze.getSize()));
         //recuperation du nom de la ressource et affichage de l'InputStream du fichier :D
         System.err.println( ze.getName() + ", " + zipFile.getInputStream(ze));
     }

WORA
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
scaryman 492 Messages postés vendredi 30 janvier 2004Date d'inscription 16 mai 2007 Dernière intervention - 18 mai 2006 à 10:45
0
Utile
Salut
Je suppose que ça doit etre possible mais alors, tu dois passer une URL et plus un String contenant le chemin d'accès.

Voila
A++
Commenter la réponse de scaryman
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 mai 2006 à 11:01
0
Utile
Bonjour !

Malheureusement, cela risque de ne pas marcher, car le constructeur File(URL) n'existe pas... Peut-être qu'il faut faire qqch avec ClassLoader.getResources(), mais je ne vois pas comment, surtout avec un filtre.
Cela dit, le filtre est optionnel, mais ça m'arrangerait bien quand même. Ce qui m'intéresse surtout, c'est de pouvoir lister les fichiers texte du répertoire afin d'en lire le contenu ...

Merci quand même  ! Si qqn a une idée ....
Commenter la réponse de thenaoh
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 mai 2006 à 11:23
0
Utile
Au fait :

dans mon code d'origine, il faut changer :
input = new BufferedReader(RessourceLocator.getReaderRessource(repertoire + "/" + tableauFichiers[i]));
 par :
input = new BufferedReader(new FileReader(repertoire + "/" + tableauFichiers[i]));
Commenter la réponse de thenaoh
scaryman 492 Messages postés vendredi 30 janvier 2004Date d'inscription 16 mai 2007 Dernière intervention - 18 mai 2006 à 11:45
0
Utile
Il y a une méthode getPath() dans URL qui retourne un string contenant le chemin.
Essaie avec ça.
Commenter la réponse de scaryman
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 mai 2006 à 20:38
0
Utile
Hélas ça ne marche toujours pas, mon 'tableauFichiers' est null (dir.list(filtreFichiers) me retourne null, idem pour dir.listFiles(filtreFichiers)) ou dir.listFiles()...)
Commenter la réponse de thenaoh
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 mai 2006 à 22:49
0
Utile
Yes ! Joli ! :-) Encore merci !!! Cela dit, est-il possible qu'il ne me retourne que la liste des fichiers d'un répertoire donné, plutôt que tous les fichiers de tous les répertoires ? (je pourrais le faire "manuellement", mais ça ferait du traitement inutile ...) Merci par avance !!
Commenter la réponse de thenaoh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.