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 :

Emplacement du fichier properties


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éprouvé Avatar de jmnicolas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 427
    Points : 976
    Points
    976
    Par défaut Emplacement du fichier properties
    Bonjour,

    j'ai créé un fichier properties pour mon application.
    Pas de problème pour le récupérer si je donne un chemin absolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\\Java\\Stage\\TravailEclipse\\simu.properties
    Par contre j'aimerais juste donner un chemin relatif :

    et que lorsque l'appli sera déployée ailleurs le fichier soit retrouvé sans avoir à spécifier de chemin absolu.

    J'ai bien trouvé ce tuto :

    http://www.javaworld.com/javaworld/j...-property.html

    mais je suis pas plus avancé.

    A tout hasard voici mon code :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    private String[] getProps ()
    	{
    		String[] propList = new String[4] ;
     
    		// on récupère les properties dans un tableau de String
    		Properties prop = new Properties () ;
    		InputStream in = null ;
     
    		// on charge le fichier
    		in = getClass().getResourceAsStream("simu.properties");
     
    		try
    		{
    			prop.load (in) ;
    			in.close () ;
    		}
    		catch (IOException e)
    		{
    			System.err.println ("Erreur lors du chargement du fichier de configuration simu.properties.");
    		}
     
    		propList[0] = prop.getProperty ("arrets") ;
    		propList[1] = prop.getProperty ("iti") ;
    		propList[2] = prop.getProperty ("troncons") ;
    		propList[3] = prop.getProperty ("services") ;
     
    		return propList ;
     
    	}

    PS j'utilise Eclipse 3.3.2 sous Windows XP

  2. #2
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Il faut que tu mettes ton fichier properties dans ton répertoire src. Comme ça il se retrouvera dans le classpath et pourra être trouvé

  3. #3
    Membre éprouvé Avatar de jmnicolas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 427
    Points : 976
    Points
    976
    Par défaut
    Ben justement j'ai essayé un peu tous les emplacements possibles et ça ne donne rien : je me mange un NullPointerException à chaque fois

  4. #4
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Normalement, ton fichier properties doit se retrouver dans target/classes, vérifie on ne sait jamais...
    Et vérifie bien le nom du fichier (en gros ne fais pas comme moi à l'instant en mettant .porpreties...)

    Et tu peux utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Properties prop = new Properties();
    prop.load(this.getClass().getClassLoader().getResourceAsStream("simu.properties"));
     
    String valeur = prop.getProperty("cle");

  5. #5
    Membre éprouvé Avatar de jmnicolas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 427
    Points : 976
    Points
    976
    Par défaut
    Bon ça marche !

    Les 2 choses qui manquaient :
    - placer le fichier dans src comme tu me l'as indiqué
    - placer un / (slash) devant le nom du fichier

    Je remet le code correct au cas où quelqu'un en ait besoin :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    private String[] getProps ()
    	{
    		String[] propList = new String[4] ;
     
    		// cette méthode récupère et renvoie les properties dans un tableau de String
    		Properties prop = new Properties () ;
     
    		InputStream in = this.getClass().getResourceAsStream("/simu.properties");
     
    		try
    		{
    			prop.load (in) ;
    			in.close () ;
    		}
    		catch (NullPointerException npe)
    		{
    			System.err.println ("Erreur lors du chargement du fichier de configuration simu.properties : le fichier n'a pas été trouvé.");
    			System.exit (-1) ;
    		}
    		catch (IOException e)
    		{
    			System.err.println ("Erreur lors du chargement du fichier de configuration simu.properties.");
    		}
     
    		propList[0] = prop.getProperty ("arrets") ;
    		propList[1] = prop.getProperty ("iti") ;
    		propList[2] = prop.getProperty ("troncons") ;
    		propList[3] = prop.getProperty ("services") ;
     
    		return propList ;
     
    	}

    Merci

  6. #6
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Bien joué , en effet en regardant attentivement le lien que tu as donné au début on peut lire :

    "/"-separated names; leading "/" indicates absolute names; all other names are relative to the class's package
    En mettant un / au début, on indique que le chemin se calcule à partir du dossier src en gros.
    En ne mettant pas de / au début, on indique un chemin qui est relatif à la classe dans laquelle on récupère le fichier.

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

Discussions similaires

  1. [ResourceBundle] emplacement du fichier properties
    Par zaboug dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 28/05/2010, 10h52
  2. [TOMCAT] Comment gérer la l'emplacement d'un fichier .properties ?
    Par Bobsinglar dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 01/10/2008, 14h55
  3. Emplacement Fichier properties
    Par NoviceJava dans le forum Struts 1
    Réponses: 12
    Dernier message: 07/06/2007, 09h55
  4. Emplacement Fichiers properties
    Par alexandre7 dans le forum Struts 1
    Réponses: 8
    Dernier message: 19/04/2007, 15h17
  5. Réponses: 5
    Dernier message: 15/09/2006, 14h26

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