2011-10-12 3 views
1

J'utilise Config. fichier de propriétés pour passer des paramètres à mes méthodes Maintenant, je suis chargement du fichier deComment spécifier le chemin pour le fichier de propriétés

Properties Config= new Properties(); Config.load(new FileInputStream("C:\\Config. properties "));

Comme je ne veux pas garder codé en dur comment puis-je régler avec le niveau du package. ou dans l'application.

Merci à l'avance.

+0

Mettre comme champ dans une énumération publique? Vous devez soit stocker le chemin d'accès dans un fichier source .java, soit dans un fichier de propriétés, et la dernière "solution" est simplement stupide. –

Répondre

4

Utilisez la classe ResourceBundle. Vous avez juste besoin de spécifier le nom du fichier de propriétés. Il prendra le fichier de n'importe quel chemin, à condition que le chemin soit dans le chemin de classe.

Exemple:

// abc.properties is the properties file,which is placed in the class path.You just need to 
// specify its name and the properties file gets loaded. 
ResourceBundle s=ResourceBundle.getBundle("abc"); 
     s.getString("key"); //any key from properties file... 
1

Placez le fichier de configuration dans le chemin de classe (où vos fichiers .class sont), et l'accès à l'aide

getClass().getClassLoader().getResourceAsStream(_path_to_config_file); 
0

Il y a deux façons d'obtenir le chemin des fichiers de configuration lors de l'exécution.

a) À partir de la base de données. b) Obtention à partir des propriétés personnalisées de la JVM configurée au niveau du serveur Le meilleur processus est "b", vous pouvez modifier les propriétés de la JVM à tout moment si le chemin est modifié et redémarrez simplement le serveur.

1

je aussi simplement vais suggérer que mais vous pouvez aussi passer le chemin complet vers le fichier de configuration via un argument de ligne de commande par exemple:

java YourApp -config C:\\config.properties 
1

un fichier de propriétés fournis avec l'application ne devrait pas être chargé en utilisant le système de fichiers, mais en utilisant le chargeur de classe. En effet, le fichier de propriétés, une fois l'application empaquetée, sera intégré dans un fichier jar, avec les fichiers .class.

Si le fichier est config.properties dans le package com.foo.bar, alors vous devriez le charger en utilisant

InputStream in = SomeClass.class.getResourceAsStream("/com/foo/bar/config.properties"); 

Ou avec

InputStream in = SomeClass.class.getClassLoader().getResourceAsStream("com/foo/bar/config.properties"); 

Vous pouvez également le charger avec un chemin relatif. Si SomeClass est également dans le paquet com.foo.bar, alors vous pouvez le charger avec.

InputStream in = SomeClass.class.getResourceAsStream("config.properties"); 

Notez que les variables Java devraient toujours commencer par une lettre minuscule: config et non Config.

+0

Merci beaucoup! Très utile. – BustedSanta

0

Si c'est juste le chemin que vous êtes inquiet, vous pouvez utiliser un chemin relatif:

Config.load(new FileInputStream("Config.properties")); 

Cela regardera dans le répertoire de travail courant. L'upsdie: mort simple. L'inconvénient: ce n'est pas si robuste. Si vous démarrez votre application depuis un autre emplacement sans modifier le répertoire de travail, le fichier ne sera pas trouvé.

Questions connexes