Comment lire un fichier texte dans un jar ? [Résolu/Fermé]

thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 17 mai 2006 à 09:40 - Dernière réponse : thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention
- 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 !!
Afficher la suite 

5 réponses

Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 17 mai 2006 à 12:11
+2
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 17 mai 2006 à 09:52
+1
Utile
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
Commenter la réponse de indiana_jules
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 17 mai 2006 à 10:02
+1
Utile
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 ...
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 à 21:08
0
Utile
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 !!
Commenter la réponse de thenaoh
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 17 mai 2006 à 23:23
-1
Utile
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 !!
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.