Comment lire un fichier texte dans un jar ?

Résolu
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 17 mai 2006 à 09:40
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 18 mai 2006 à 21:08
Bonjour à tous !

Dans mon appli, je fais régulièrement des lectures dans des fichiers texte, comme l'illustre l'exemple ci-dessous :
BufferedReader input = null;
try {
   input = new BufferedReader(new FileReader("/monChemin/monFichier.txt"));
   ligneInfo = input.readLine();
}
catch (IOException exLecture) {
   exLecture.printStackTrace();
}
finally{
   // fermeture du fichier :
   if (input ! = null) {
      try {
         input.close();
      }
      catch (IOException ex) {
         System.out.println(ex.getMessage());
      }
   }
}

Ce code marche très bien, tant que je reste sous Eclipse. Mais je souhaiterais savoir s'il est possible d'accéder à mon fichier texte une fois l'appli exportée dans un Jar exécutable, sachant que mon fichier texte se trouve également dans ce jar....

J'ai déjà essayé d'utiliser ClassLoader.getSystemResource(), mais sans succès, car cette méthode renvoie une URL, et que le constructeur FileReader ne peut prendre une URL en paramètre...

Merci par avance pour vos suggestions et votre aide !!

5 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
17 mai 2006 à 12:11
Salut,

pour lire un fichier text dans un jar il faut utiliser la methode getRessourceAsStream

InputStream in = ClassLoader.getResourceAsStream(
                "chemin/fichier/dans/jar/fichier.txt");

exemple ici le fichier fichier.txt se trouve dans le package "chemin.fichier.dans.jar"

WORA
2
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
17 mai 2006 à 09:52
Ben tu peux utiliser File non ? :
new BufferedReader(new FileReader(new File(monUrl)));

Voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
1
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
17 mai 2006 à 10:02
Bonjour !

Malheureusement non, car le constructeur File(URL) n'existe pas. J'ai aussi essayé avec :
      URL monURL = ClassLoader.getSystemResource("/monChemin/monFichier.txt");
      File monFichier = new File (monURL.toURI());
mais sans succès... il n'aime manifestement pas : monURL.toURI() ....

Merci quand même ! Si qqn a une idée ...
1
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
18 mai 2006 à 21:08
Re-salut !!

Dans le même style j'ai également une autre question : comment lister les fichiers d'un répertoire dans un jar ??


http://www.javafr.com/infomsg_COMMENT-LISTER-FICHIERS-REPERTOIRE-DANS-JAR_741337.aspx


Merci beaucoup par avance !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
17 mai 2006 à 23:23
Yes !! Merci beaucoup, ça marche impec' !!

Pour résumer donc, il faut dans mon code ci-dessus changer la ligne :

input = new BufferedReader(new FileReader("/monChemin/monFichier.txt"));

par ceci :

InputStream in = ClassLoader.getResourceAsStream("/monChemin/monFichier.txt");
input = new BufferedReader(new InputStreamReader(in));

Voilo ! encore merci !!
-1
Rejoignez-nous