Continuez avec le fichier .properties et chargez le fichier en tant que ressource.
S'il se trouve dans le chemin de classe, il serait trouvé. Ce que j'utilise, parce que c'est beaucoup plus facile pour moi est un ensemble de ressources à la place.
modifier
Si le fichier est dans votre classpath, vous pouvez chargé soit comme une ressource avec: Some.class.loadResource(...)
ou ce que je fais est d'utiliser un ResourceBundle qui fait essentiellement la même chose.
Par exemple, si j'ai:
import java.util.ResourceBundle;
public class ResourceBundleTest {
public static void main(String [] args) {
ResourceBundle bundle = ResourceBundle.getBundle("connection");
for(String key: bundle.keySet()){
System.out.printf("bundle[%s]=%s%n",key, bundle.getString(key));
}
}
}
je peux charger ce fichier si est dans le chemin de la classe. La propriété est à l'extérieur, dans « certains/emboîtée/dir »
$ls -l some/nested/dir/
total 8
-rw-r--r-- 1 oscarreyes staff 35 Jun 25 12:06 connection.properties
$cat some/nested/dir/connection.properties
name=Oscar
lastName=Reyes
age=0x1F
Si je cours sans ajouter ce répertoire à mon classpath il ne fonctionnera pas:
$java ResourceBundleTest
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name connection, locale es_ES
at java.ut...ceBundle.java:1427)
at java.ut...urceBundle.java:1250)
at java.ut...ceBundle.java:705)
at Resourc...st.java:6)
Mais si j'ajoute le répertoire à mon classpath, alors le fichier sera trouvé facilement.
$java -cp some/nested/dir/:. ResourceBundleTest
bundle[lastName]=Reyes
bundle[age]=0x1F
bundle[name]=Oscar
$
De la même façon, vous pouvez avoir un fichier .jar, et de mettre votre fichier .properties où vous voulez, il vous suffit de l'inclure dans votre classpath.
Les propriétés équivalentes en utilisant seraient:
import java.util.Properties;
public class LoadProperties {
public static void main(String [] args) throws java.io.IOException {
Properties properties = new Properties();
properties.load(LoadProperties.class.getResourceAsStream("connection.properties"));
properties.list(System.out);
}
}
Mais pour une raison quelconque, je préfère le regroupement de ressources.
Veuillez clarifier le problème. Les fichiers de propriétés n'ont pas besoin d'être dans un pot. Pourquoi ne pas simplement le stocker sur le système de fichiers? – erickson