powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / FileOuputStream и чтение проперти из JSP
2 сообщений из 2, страница 1 из 1
FileOuputStream и чтение проперти из JSP
    #33958908
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файлик мой.properties, в котором находятся лайблы для странички. Из JSP подчитываются <fmt:message key= ... и т.д., инициализируется он как <fmt:setBundle и т.д.

Интерфейс позволяет менять значения файла properties. В случае изменения строки (есть ввод) изменения отправляются в сервлет и там обрабатываются следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
FileInputStream inStream =  new  FileInputStream(fileName); //поток ввода
Properties _properties =  new  ArrayList(); //инициализация проперти
_properties.load(inStream); //загрузка из потока
inStream.close(); //входной поток нам уже не нужен
_properties.setProperty({key}, {value}); //изменение свойств
FileOutputStream outStream =  new  FileOutputStream(fileName); //выводной поток
_properties.store(outStream); //сохраняем в нем пропертис
outStream.close(); //закрываем поток
Далее сервлет снова вызывает текущую страницу.
Однако измененная строка остается прежней, хотя файлик проперти уже изменен. Если вручную обновить страницу, все отображается верно.

Если я начинаю дебаггить, то при пошаговом выполнении отображение происходит нормально. Насколько я понимаю, при записе в файл процесс не успевает освободить ресурс (файлик) и из JSP читается "старый" файл. При дебагге времени предостаточно и все идет нормально.

В описании к FileOutputStream есть две функции и finalize(). Первая ничего не дает, а вторая недоступна (вместо нее попробовал использовать try {store} finally {close}), но результата это не дало.

Также добавлю, что при открытии любого из потоков, естественно, файл удалить я не могу (открыт доступ), однако при дебагге после выполнения закрытия потока записи в файл он нормально удаляется, то есть: либо дело не в этом, либо все подтверждается - при отладке времени хватает и ресурс освобождается.

Может, кто-то больше смыслит в потоках и в работе с физическими файлами - как убедиться, что на момент окончания выполнения моей функции (ДО передачи управления диспетчеру) поток закрыт и JSP может читать из обновленного файла?

Кстати, если в JSP setBundle стоит с Scope по умолчанию "session" или "application", то даже при передаче управления в сервлет ресурс не освобождается (т.е. удалить нельзя, а перезапись происходит позже).

Хелп. Очень не хочется передавать в JSP коллекции, когда можно очень элегантно менять файлик и читать строки посредством JSTL.
...
Рейтинг: 0 / 0
FileOuputStream и чтение проперти из JSP
    #33959848
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, у кого-то есть не готовое решение, а хотя бы "направление поиска" или просто элементарный совет. Не паузу же ставить в сервлете, в конце-концов!
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / FileOuputStream и чтение проперти из JSP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]