![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
Здравствуйте! У меня такая проблема - у меня модель дерева содержит массив файлов. Мне надо чтобы при следующем открытии программы, модель восстанавливалась. Подскажите, как лучше сделать? Я пробовал сохранять имена файлов с помощью getAbsolutePath, а потом из них создавать файлы заново. У меня ничего не получилось с такими папками как MyComputer и т.п. Можно ли еще как-нить сделать сохранение имен и восстановление из них? Если нет, то поможет ли сериализация?
Огромное спасибо! -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Я не понял задачу. Тебе надо восстанавливать дерево, или сами файлы на диске?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
дерево, но потом можно выбрать, например, директорию из дерева и просмотреть ее содержимое..
-------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
| batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Тогда, я думаю, достаточно будет сериализовать объект-модель дерева в файл, а при повторном запуске - восстанавливать.
Добавлено @ 18:51 Вот это выполняешь при выходе (ну или по команде юзера "Сохранить"):
А это, соответственно, при запуске/восстановлении:
Это сообщение отредактировал(а) Lamer George - 19.5.2006, 18:36 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
| skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
спасибо
-------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
| skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
а можно ли сериализовать объект в Preferences?
-------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Кажется, нет. Если только руками делать преобразование в объект Preferences, а потом его сериализовывать.
А зачем? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| LSD |
|
||||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В Preferences нельзя, но можно в XML:
Сериализация объектов в XML В Java есть возможность сериализации объектов JavaBeans в XML. Я не буду здесь описывать спецификацю JavaBeans, при желании ее можно найти тут. Создадим два класса:
Для сериализации используется класс XMLEncoder, который действует аналогично ObjectOutputStream, для десериализации используется XMLDecoder. Сериализуем наши классы в файл, а затем восстановим их:
В результате запуска в консоли получим:
и на диске будет создан файл my_java_bean.xml с таким содержимым:
Объект был успешно сериализован и десериализован. Хотя является ли TreeModel объектом JavaBean я очень сильно не уверен. Но ее можно к этому состоянию привести. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||||||
|
|||||||||||
| skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
Всем большое спасибо!
Насчет сериализации в XML - все равно сохраняем в файл(не важно что в XML). Проблема уже решилась, но пришлось воспользоваться не таким методом, а немного через ... Суть в том, что если мы сериализуем объект файл, который фактически является оболочкой для Win32ShellFolder2, то если мы потом его пытаемся десериализовать, то получим только объект типа File. А класс ShellFolder, к сожалению, не сериализуется..... Я когда попробовал сериализовать My Computer, при вытаскивании получил File c путем "С:\\" )) -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |