Продолжайте использовать .properties и загрузите файл в качестве ресурса.
Если он находится в пути к классам, он будет найден.
То, что я использую, потому что для меня намного легче, чем ресурс.
редактировать
Если файл находится в пути к классам вы можете загрузили его либо в качестве ресурса с: 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));
}
}
}
я могу загрузить файл, если в пути к классам. Отель находится на улице, в «некотором/вложенном/реже»
$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
Если я запустить его без добавления этого каталога в моем пути к классам она не будет работать:
$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);
}
}
Но по какой-то причине я предпочитаю пакет ресурсов.
Просьба уточнить проблему. Файлы свойств не обязательно должны находиться внутри банки. Почему бы вам просто не сохранить его в файловой системе? – erickson