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 :

Lire un fichier texte dans un Jar


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Lire un fichier texte dans un Jar
    Bonsoir à tous!

    J'ai parcouru de long en large le forum mais je n'ai pas débloqué mon problème...

    Je souhaite lire un fichier texte dans un Jar. Du coup, j'ai repris le code existant sur ce forum. Mais cela me génére l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at java.io.Reader.<init>(Reader.java:61)
    	at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
    	at geographie.Departements.lire(Departements.java:97)
    Ma métode où j'essaie de lire le fichier txt :
    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
    	public class Departements {
     
    	private BufferedReader essaiLecture;	
     
    	public String lire(){
    		String ret="";
    		String textURL="../hello.txt";
    		essaiLecture=new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(textURL)));
    		try {
    			ret=essaiLecture.readLine();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return ret;
    	}
    }

    Le fichier hello.txt est bien présent. Si vous avez des pistes je suis preneur !

    Merci pour vos futures réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 870
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    53
    Par défaut
    Le chemin d'acces donne est relatif a la racine du JAR, donc deja ca ne va pas puisque tu utilises "..".

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Pour une raison ou une autre, les références arrière du type ".." ne marchent pas une fois le projet packagé dans un jar.

    Pour contourner ce problème, il suffit de procéder par référencement avant (package1/package2/...).
    Encore plus simple, déclarer une classe dans le même package que le fichier "hello.txt" et l'utiliser pour référencer le fichier. Même si t'en a pas, il te suffit de declarer une classe vide (DummyClass).

    Un exemple :

    [-] test
    ..|__hello.txt
    ..|__DummyClass.java
    ..|__[-] test.main
    ........|__Departements.java
    ........|__etc.

    et dans Departements.java, tu fais :
    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
     
    public class Departements {
     
    	private BufferedReader essaiLecture;	
     
    	public String lire(){
    		String ret="";
    		essaiLecture=new BufferedReader(new InputStreamReader(
    			DummyClass.class.getResourceAsStream("hello.txt")));
    		try {
    			ret=essaiLecture.readLine();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return ret;
    	}
    }
    Bonne chance.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut ça marche !
    Merci djo.mos et bouye pour ce super coup de main.

    Je fais une récap :

    1. Creer un package, par exemple avec le nom " test".
    2. Mettre une classe vide DummyClass à l'intérieur
    3. Ajouter votre fichier texte, ce qui donne dans votre package :
    [-] test
    ..|__hello.txt
    ..|__DummyClass.java
    4.Faire un appel à votre fichier texte à partir d'une autre classe avec cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    private BufferedReader essaiLecture;	
    
    essaiLecture=new BufferedReader(new InputStreamReader(
    			test.DummyClass.class.getResourceAsStream("hello.txt")));

    Si vous appelez votre fichier texte avec une classe qui est situé dans le même package, écrire seuleument "DummyClass.class.getResourceAsStream("hello.txt")"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lire des fichiers text dans un zip
    Par usermap dans le forum C#
    Réponses: 1
    Dernier message: 24/12/2009, 01h37
  2. Lire un fichier text dans un textbox
    Par Ahmed Sat dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/06/2009, 13h15
  3. Lire un fichier texte dans une String
    Par philomania dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/12/2007, 14h51
  4. Réponses: 3
    Dernier message: 05/06/2007, 12h15
  5. [JAR] Lire un fichier txt dans un Jar
    Par flzox dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 28/08/2006, 02h30

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