![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
feanor59 |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 24.1.2008 Где: Пермь Репутация: нет Всего: нет |
Суть в следующем.
Имеется метод работы с изображением, изменяющий его размеры. Там есть строчки:
Так вот. Сначала имеем некоторый файл, открытый как
При первом использовании метода, всё работает отлично, но если в дальнейшем изменить содержание файла file.jpg, то при его открытии
Как можно сбросить этот буфер? Это сообщение отредактировал(а) feanor59 - 26.10.2009, 21:54 |
||||||
|
|||||||
magicfly |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 21.2.2007 Репутация: нет Всего: 1 |
Вы закрываете файл и поток после работы?
|
|||
|
||||
feanor59 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 24.1.2008 Где: Пермь Репутация: нет Всего: нет |
Да, разумеется. Более того, после внесения изменений в графический файл, они отображаются в просмотрщиках изображений, т. е. запись действительно происходит, а не остаётся в кеше. Но тем не менее, при ImageIcon imageIcon = new ImageIcon(filePath); imageIcon хранит дескриптор старого файла (к примеру разрешение изображения, полученного из imageIcon соответствует разрешению старого файла). И, соответственно, при записи imageIcon в файл, записывается старое изображение. |
|||
|
||||
mgarin |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
Натыкался на эти грабли
![]() Это буфер непосредственно ImageIcon, точнее даже Image который в нем хранится При своем создании он подкачивает один раз ресурсы из файла и в дальнейшем, в течение жизни ява приложения использует уже подкачанный ранее файл при повторном обращении. Сбросить, если мне не изменяет память, можно вот так:
Если не помогает, могу откопать проект, где это было использовано и уточнить... Еще точно помню всегда свежее изображение подкачивается если его брать вот так:
А вот такой метод опять же заставит вас наткнуться на грабли кэша:
Причем если посмотреть комментарий 2го метода (getImage):
Т.е. при использовании метода createImage подразумевается что разработчик сам задействует свой некий механизм кэша ;) Кстати, к вопросу, почему ImageIcon тоже кэширует это дело:
Toolkit.getDefaultToolkit().getImage(filename); - ничего не напоминает? ;) Это сообщение отредактировал(а) mgarin - 28.10.2009, 05:20 |
||||||||||
|
|||||||||||
feanor59 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 24.1.2008 Где: Пермь Репутация: нет Всего: нет |
mgarin, огромное спасибо! пофиксил.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |