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

Langage Java Discussion :

trouver une ressource


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut trouver une ressource
    bonjour,
    j'ai un package dans lequel j'ai placé des fichiers .bin
    moi je travail dans le package org.ces.cagt.blabla et les fichiers .bin se trouvent dans le package org.ces.cagt.binaryfiles

    quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader in = new BufferedReader(new FileReader("org/ces/cagt/binaryfiles/monfichier.bin"));
    ça marche pas : fichier introuvable!!
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     getClass.getResources("org/ces/cagt/binaryfiles/monfichier.bin")
    ne marche pas non plus puisque ce dernier te revoie une URL et le constructeur de FileReader n'accepte pas d'URL

    qq a une idée ??

    PS: je suis sous netbeans

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Essaye donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getClassLoader().getRessourceAsStream("ta ressource");
    C'est comme ça que je charge mes fichiers ressources et ça marche très bien! Tu récupéreras un InputStream, par contre, et non pas un FileReader: j'espère que ça ne te gènera pas


    A mon avis, tu auras du mal à trouver une méthode JAVA qui te permettra d'ouvrir une ressource située dans un package avec les classes File ou FileReader.

    Si tu compiles ton projet en jar, tes ressources seront encapsulées dans le jar, et File ou FileReader ne fonctionneront naturellement plus (ces classes ne lisentpas l'intérieur d'un jar)

    Il est donc normal dene pas pouvoir ouvrir une ressource par un FileReader à mon avis. Par contre, getRessourceAsStream() ouvre ta ressource sans problème à l'intérieur d'un jar.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    j'ai absolument besoin de la méthode readLigne !!!! elle est indispensable !

    as-tu une idée ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Salut,

    Essaye plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getClass.getResources ("/org/ces/cagt/binaryfiles/monfichier.bin");
    Il faut te placer à la racine de l'archive jar.

    a+

  5. #5
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    Citation Envoyé par Kh4iN3
    Salut,

    Essaye plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getClass.getResources ("/org/ces/cagt/binaryfiles/monfichier.bin");
    Il faut te placer à la racine de l'archive jar.
    elle ne marche pas:
    1) parceque elle retourne une URL;
    2) parceque même si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getClass.getResources ("/org/ces/cagt/binaryfiles/monfichier.bin").toString();
    elle va rechercher depuis ce "c:\" et non a partir du jar !!!

    une autre idée ??

  6. #6
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    j'ai trouvé cette solution, qui dit mieux !!!! ???


    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
     
            BufferedReader in = null;
            BufferedWriter out = null;
            String s = null;
            try {
                out = new BufferedWriter (new FileWriter("tmp.tmp"));
                InputStream is = getClass().getResourceAsStream("/org/ces/cagt/binaryfiles/monfichier.bin");
                int i;
                while ((i = is.read())!=-1)
                    out.write(i);
                out.close();
                is.close();
                in = new BufferedReader(new FileReader("tmp.tmp"));
                /**
                   traitement sur le fichier binaire
                */
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            File f = new File("tmp.tmp");
            f.delete();
    ça consiste tout simplement à extraire du jar le fichier binaire, le stocker dans un fichier tmp.tmp et en suite supprimer le fichier tmp

    qu'en dites-vous ?

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par mhamedbj
    ça consiste tout simplement à extraire du jar le fichier binaire, le stocker dans un fichier tmp.tmp et en suite supprimer le fichier tmp

    qu'en dites-vous ?
    Tu t'es un peu compliqué la vie...

    Tu as une vision un peu étriqué des flux : un Reader ne sert pas seulement à lire un fichier, mais peut lire n'importe quel flux depuis n'importe quelle source...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try {
    	BufferedReader in = new BufferedReader(
    		new InputStreamReader( getClass().getResourceAsStream("/org/ces/cagt/binaryfiles/monfichier.bin") ) );
    	try {
    		/**
                      traitement sur le fichier binaire
                    */
     
    	} finally {
    		in.close();
    	}
    } catch (IOException e) {
    	e.printStackTrace();
    }
    a++

  8. #8
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    merci !!!!!!!
    ça marche.
    donc si j'ai bien compris un FileReader c'est pour lire seulement des fichiers, et le InputStreamReader c'est pour les flux d'octets quelque soit leurs origine !! ?

  9. #9
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    un truc qui me fait peur, c'est que tu utilises un Reader pour traiter des fichiers binaires ?
    Si tu veux vraiment traiter des fichiers binaires, c'est InputStream qu'il te faut employer.

    Vincent

  10. #10
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    non non non, du tout, le .bin est trompeur, je m'en excuse, c'est pas moi qui a crée ces fichiers, mais en fait se sont des fichiers texte.

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

Discussions similaires

  1. [ServletContext]Charger une ressource dans la servletContext
    Par lalou33 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/06/2004, 14h37
  2. [CR] trouver une bonne doc
    Par ina dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/06/2004, 17h43
  3. Accès à une ressource ?
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/03/2004, 16h29
  4. Réponses: 3
    Dernier message: 21/01/2004, 08h47
  5. Inclure une dll dans une ressource
    Par bgcode dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/08/2003, 11h12

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