Продолжайте использовать .properties и загрузите файл как ресурс.
Если он находится в пути к классам, он будет найден.
То, что я использую, потому что для меня гораздо проще - это комплект ресурсов.
edit
Если файл находится в вашем classpath, вы можете загрузить его либо как ресурс с помощью: Some.class.loadResource(...)
, либо я использую ResourceBundle, который делает то же самое.
ДляНапример, если у меня есть:
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));
}
}
}
Я могу загрузить этот файл, если находится в пути к классам.Свойство находится снаружи, в "some / nested / 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
Если я запусту его без добавления этого каталога в мой classpath, оно не будет работать:
$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)
Но если я добавлюкаталог к моему classpath, тогда файл будет легко найден.
$java -cp some/nested/dir/:. ResourceBundleTest
bundle[lastName]=Reyes
bundle[age]=0x1F
bundle[name]=Oscar
$
Аналогичным образом, вы можете получить файл .jar и поместить свой файл .properties куда угодно, вам просто нужновключите его в свой путь к классам.
Эквивалентными свойствами использования будут:
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 );
}
}
Но по какой-то причине я предпочитаю комплект ресурсов.