Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как прочитать файл из jar


Автор: COVD 12.12.2005, 18:59
В аппликейшн jar-е лежит проперти файл в корневой директории, т.е. путь у него пустой. Какой путь указать при создании new File(...) , чтобы прочитать его? Никак не могу понять.

Имею пример использования PropertyResourceBundle, но эта штука читает один раз и кеширует. Возможно, так и надо делать. Но хотелось бы менять установки не перезапуская программу.
Как это правильнее реализовать :
1. редактированием проперти файла и релоадом их из приложения?
2. в АПИ создавать соответствующие поля с возможностью редактирования ?
3. еще как-то ?

Автор: ShurikA 13.12.2005, 01:13
Если я правильно понял вопрос, то
Проще всего указать полный путь, типа: C:\Program Files\... и т.д.
Ну тлт если очень хочется то относительный при том что ..\ поднимает на одну дерикторию выше.
Добавлено @ 01:21
Цитата(COVD @ 12.12.2005, 17:59)
Имею пример использования PropertyResourceBundle, но эта штука читает один раз и кеширует. Возможно, так и надо делать. Но хотелось бы менять установки не перезапуская программу.
Как это правильнее реализовать :
1. редактированием проперти файла и релоадом их из приложения?
2. в АПИ создавать соответствующие поля с возможностью редактирования ?
3. еще как-то ?


А 1 и 2 это не почти одно и тоже?
Просто через GUI удобнее для юзера.

Автор: Шмель 13.12.2005, 05:23
Цитата(COVD @ 13.12.2005, 00:59)
Какой путь указать при создании new File(...) , чтобы прочитать его?

Элементарно, Ватсон. У класса Class есть два метода: getResource(String resourceName) и getResourceAsStream(String resourceName). Они предназначениы, как нетрудно догадаться по их именам, для загрузки так называемых ресурсов. Ресурс - это любой файл, доступный загрузчику классов, т.е. файлы свойств (properties), картинки и т.д.
Так вот. Чтобы считать property-файл, нужно выполнить такой нехитрый код:
Код

Properties props = new Properties();
InputStream is = getClass().getResourceAsStream("/file.properties");
props.load(is);
System.out.println(props.get("my.property"));

Файл свойств, который лежит в корне jar'а, называется file.properties, выглядит он так:
Код

my.property=This string is property form the properties file


Цитата(COVD @ 13.12.2005, 00:59)
Имею пример использования PropertyResourceBundle, но эта штука читает один раз и кеширует. Возможно, так и надо делать. Но хотелось бы менять установки не перезапуская программу.
Как это правильнее реализовать :
1. редактированием проперти файла и релоадом их из приложения?
2. в АПИ создавать соответствующие поля с возможностью редактирования ?
3. еще как-то ?

Здесь, ИМХО, больше подходит второй путь, т.е. не надо редактировать файл, а просто менять соотвествующие свойства с помощью метода put(Object key, Object value) класса Properties, который унаследован от Hashtable.

Автор: COVD 13.12.2005, 18:12
ShurikA
Цитата
А 1 и 2 это не почти одно и тоже?

В первом случае при перезапуске программы загрузятся новые значения, а во втором - старые. В 1 варианте работы меньше.
Шмель
Спасибо, попробую!

Автор: ShurikA 14.12.2005, 20:36
Цитата(COVD @ 13.12.2005, 17:12)
В 1 варианте работы меньше.

Работы меньше гля кого? Тебя или компа?

Автор: COVD 14.12.2005, 21:50
Цитата
Работы меньше гля кого? Тебя или компа?

Конечно для меня. Чтение свойств - эпизодическая работа для приложения в моем случае, поэтому загрузку компьютера на этой операции не учитываю.

Автор: ShurikA 15.12.2005, 17:24
Цитата(COVD @ 14.12.2005, 20:50)
Цитата
Работы меньше гля кого? Тебя или компа?

Конечно для меня. Чтение свойств - эпизодическая работа для приложения в моем случае, поэтому загрузку компьютера на этой операции не учитываю.

Ну это вопрос уже спосный. Если ты пишешь прогу для самого себя, то делай конечно как тебе удобно.
А если для абсолютно посторонних людей??? Или ты им тоже хочешь предложить редактированием проперти файла?

Автор: LSD 15.12.2005, 17:30
Цитата(ShurikA @ 15.12.2005, 17:24)
Или ты им тоже хочешь предложить редактированием проперти файла?

Согласен, с предыдущим оратором. Редактирование файла настроек приемлемо (и даже желательно), для приложений типа веб сервера, сервера приложений, СУБД и т.п.
Но приложение для простого юзера, должно иметь простой способ настройки. И чем не устраивает пакет java.util.prefs?

Автор: COVD 15.12.2005, 21:27
У меня как раз серверное приложение smile. Про существование пакета java.util.prefs не был в курсе. Спасибо за наводку, посмотрю. Хотя у меня всего десяток параметров и простой файл "параметр=значение" устраивает на 200%.

Автор: LSD 15.12.2005, 21:40
У нас в ЧАВО есть статейка по поводу java.util.prefs.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)