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 :

acceder à une variable via un fichier properties


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut acceder à une variable via un fichier properties
    bonjour,
    j ai crée un fichier properties avec comme data :
    et dans mon code Java , j appelle un helper qui me permet d accéder à ce fichier.

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (code.equals("user1") ) {
     Helper toto = new Helper("c:\\profile.properties");
     toto.getMap().getObject(user1);
    }
    mais j ai un message d erreur qui est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't find resource for bundle java.util.PropertyResourceBundle, key user1
    vous pourriez m aider? peut etre mon Helper est mal approprié pour ce que je souhaite faire

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    On peut voir ce que fait ton helper s'il te plait ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut code du ressource bundle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public ResourceBundle getMap () throws InvalidAttributException{
    			ResourceBundle result = null;
     
    			if(filePath!= null && !"".equals(filePath.trim() ) ){
     
    				result = ResourceBundle.getBundle(filePath.replaceAll(".properties", ""));
     
    			}else throw new InvalidAttributException("Helper.getMap, bad parameter filePath: " + filePath);
     
    			return result;
    		}

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok donc là si je comprends bien ce que tu fais c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result = ResourceBundle.getBundle("c:\\profile");
    Pour moi d'après ceci http://java.sun.com/j2se/1.4.2/docs/...a.lang.String), c'est pas le path qu'il faut donner, mais un chemin relatif dans leclasspath. C'est pour faire une traduction ou juste enregistrer des préférences? Dans le deuxième cas, utilise plutôt la classe Properties

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    je devrais pas non?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    je devrais utiliser la classe properties avec hargemetn du fichier comme ceci ?

    public final static String FICHIER_PROPERTIES = "C:\\charge\\chargeweb\\src\\profile.properties";


    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 Properties chargementParametres(String filename) {
                            Properties props = new Properties();
                            FileInputStream instream;
                            BufferedInputStream buffer;
     
                            try {
                                       instream = new FileInputStream(filename.trim());
                                       buffer = new BufferedInputStream(instream);
                                       props.load(buffer);
                                       buffer.close();
                                       instream.close();
                            } catch (Exception e) {
                                       System.out.println(e);
                            }
                            return props;
                }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je ferais plus un truc de ce genre ouais

    PS : pour fermer tes streams, fais le plutôt dans un bloc finally comme indiqué ici : http://java.developpez.com/faq/java/...ererRessources

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut j ai simplifié ée code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    				String propFile = System.getProperty("profile.properties"); 
    					FileInputStream in = new FileInputStream(propFile); 
    					Properties prop = new Properties(); 
    					prop.load(in); 
    					in.close(); 
     
     
    				user1= (String)prop.getProperty("user1");

    Mais je ne sais pas si je dois mettre le chemin d accès en entier pour acceder au fichier properties et sous quelle forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\\xxx\\ssss\\xxx.properties ?

  9. #9
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    J'ai un peu survolé votre conversation, mais si j'ai bien compris il y a bien plus simple.

    Tu as un fichier disons "resources.properties" qui est dans un package, celui que tu veux :
    tu as ensuite un objet avec une méthode static qui permet d'obtenir la resource en fonction de son attribut :
    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
    import java.util.MissingResourceException;
    import java.util.ResourceBundle;
     
    public class PropertiesLoader {
     
    	private static final String BUNDLE_NAME = "package1.package2.resources"; 
    	private static ResourceBundle resourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
     
    	public static String getString(final String key) {
    		try {
    			return resourceBundle.getString(key);
    		} 
    		catch (MissingResourceException e) {
    			System.err.println("Unknowed resource !" + key + "!");
    			return "!" + key + "!";
    		}
    	}
     
    }
    A noter que BUNDLE_NAME contient tous les package séparés par un point pour accéder au fichier "resources.properties", puis le nom du fichier sans .properties (ici "resources").

    Tu utilise cela dans ton appli comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String user = PropertiesLoader.getString("USER")
    Et user contiendra "bidule".

    Si j'ai mal compris ton problème, alors désolé de cette intrusion intempestive

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String propFile = System.getProperty("profile.properties");
    Euh... c'est pas ça que tu veux faire. System.getProperty() te retourne une property du système comme dit dans la doc. Toi tu veux ouvrir ton fichier donc tu passes bien par la méthode load indiquée ici http://java.sun.com/j2se/1.4.2/docs/...o.InputStream)
    Mais pas par System.getProperty
    Tschau

    PS : regarde ici par exemple http://www.java2s.com/Code/Java/Deve...ertiesload.htm
    Dernière modification par Invité ; 06/08/2008 à 18h01. Motif: correction balise

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par visiwi Voir le message
    Salut,

    J'ai un peu survolé votre conversation, mais si j'ai bien compris il y a bien plus simple.

    Tu as un fichier disons "resources.properties" qui est dans un package, celui que tu veux :
    tu as ensuite un objet avec une méthode static qui permet d'obtenir la resource en fonction de son attribut :
    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
    import java.util.MissingResourceException;
    import java.util.ResourceBundle;
     
    public class PropertiesLoader {
     
    	private static final String BUNDLE_NAME = "package1.package2.resources"; 
    	private static ResourceBundle resourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
     
    	public static String getString(final String key) {
    		try {
    			return resourceBundle.getString(key);
    		} 
    		catch (MissingResourceException e) {
    			System.err.println("Unknowed resource !" + key + "!");
    			return "!" + key + "!";
    		}
    	}
     
    }
    A noter que BUNDLE_NAME contient tous les package séparés par un point pour accéder au fichier "resources.properties", puis le nom du fichier sans .properties (ici "resources").

    Tu utilise cela dans ton appli comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String user = PropertiesLoader.getString("USER")
    Et user contiendra "bidule".

    Si j'ai mal compris ton problème, alors désolé de cette intrusion intempestive
    Oui mais pour moi c'est plus pour faire de la localisation le resourceBundle. Et pis ça implique que ton fichier soit dans le classpath. Avec la classe Properties, tu peux ouvrir n'importe quel fichier properties

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut j ai fait encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String propFile = "C:\\profile.properties"; 
     
    FileInputStream in = new FileInputStream(propFile); 
    Properties prop = new Properties(); 
    prop.load(in); 
    in.close(); 
    String value = (String)prop.getProperty("user1")
    cela fonctionne le souci c est que ca va marcher en local car j ai mis le chemin complet et donc il faudrait que ce soit en chemin relatif....

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ben tu peux en chemin relatif aussi... Depuis la base de tes packages. Tu récupères comment ta chaine vers le fichier ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    bonne question !!!

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut normalement

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut j ai essayé
    avec le ressourceBundle mais cela ne fonctionne pas.
    je vais rester sur le properties mais reste le souci du chemin.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je ne comprends pas vraiment quel est le souci. Peux tu expliquer plus clairement s'il te plait ?
    Ton chemin est relatif apparemment, donné en dur dans le code ? une entrée utilisateur au clavier ? Un JFileChooser ?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut oui
    Hello
    effectivement le chemin est hardcodé et ça va pas marché une fois l application déployé sur une autre machine

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\\package1\package2\\package3\\package4\\ressources.properties";

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut j ai remplace mon chemin complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InputStream is 	                         = null;$
    is = this.getClass().getResourceAsStream("/ressources.properties");

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupération d'une variable depuis un fichier .properties
    Par MrMust dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 23/02/2012, 16h57
  2. Prb mettre à jour une table via un fichier excel
    Par antier dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 10h31
  3. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46
  4. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 14h49
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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