![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| can4ec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 25.4.2006 Репутация: 1 Всего: 1 |
Вопрос:
Можно ли в фале найти нужный объект например по ключу и десериализовать его. Или как то по другому. Смысл найти объект в файле по значению. Мысли: На скоко я понял каждый объект в файле лежит под каким то номером. Как этот номер можно заменить и как вернуть значение лежащие под этим номером? К примеру нужно вернуть объект у которого поле ключ равно 123456. Просто тогда эти номера можно было бы заменить на ключи и по ключу вернуть объект. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
can4ec
Какой контекст задачи? Можно положить все искомые объекты в Map и сериализовать и сохранить этот Map, а "находить объект в файле по значению" get'ом от Map'a после его десериализации. |
|||
|
||||
| can4ec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 25.4.2006 Репутация: 1 Всего: 1 |
Контекст задачи поставлен так. Что в файле лежат объекты к примеру класса Фотография. Где то в программе мне понадобился объект файл с таким то именем. Мне нужно достать объект из файла с таким именем (имя это поле в классе.). За сериализовать HashMap нельзя такое условие задачи. Надо именно среди объектов как-то найти нужный. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Странное ограничение... Чтобы эфективно находить нужный объект в наборе других -- объекты нужно как-то проиндексировать. Если уникальный идентификатор объекта хранится только в нем самом и никакой индексирующей структуры нет, то иначе как перебором по всему списку ты нужный не найдешь.
(зы. фотографии я бы в базе данных хранил, или в крайнем случае в виде файлов на диске) Добавлено @ 16:56 перечитал все... как конкретно у тебя хранятся эти самый фотографии? все в одном файле, каждый в своем..? приведи какие нибудь фрагменты кода Это сообщение отредактировал(а) Maksym - 21.5.2007, 16:59 |
|||
|
||||
| can4ec |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 25.4.2006 Репутация: 1 Всего: 1 |
Я читал объекты хроняться в файле под номерами типа 1,2,3,.... И тогда можно ,как я понимаю, было бы вынимать объект по номеру. Так можно? Это токо мысли. Добавлено через 3 минуты и 40 секунд Ну вот моя сериализация:
а вот как вытащить объект например по ключу или по другому полю хз. Может что то с байтами сделать я хз. |
||||
|
|||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Не думаю что можно непосредственно обратиться в нужное место файла (если используешь потоковый ввод\вывод, то точно нельзя), но если знаешь порядок в котором объекты писались в файл, то и извлекаться они будут в том же порядке. То есть если тебе нужен пятый записанный в файл объект, то можно пропустить из потока четыре и работать с пятым. Но эту самую информацию о порядке объектов нужно тоже где-то хранить. Вот тебе и индексация. Это сообщение отредактировал(а) Maksym - 21.5.2007, 17:12 |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Не уверен на скока поможет, но попробуй просто прочитать файл(любым способом) и в условии поставь определенный символ(или значение) потом что найдет, то выдай на экран!!
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
can4ec, тебе нужно реализовать нечто наподобие ROWID в СУБД. Вопрос в том, имеет ли смысл изобретать свой велосипед или стоит использовать уже готовый типа Derby.
Можно скипнуть нужное количество байт. -------------------- 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. |
|||
|
||||
| shimopus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: 1 Всего: 1 |
ну ты бы хоть вопрос правильно ставил на форуме, Сань ))
Ограничение возникает т.к. объектов много и все они разные. Каждый раз надо сохранять новые, изменять старые и удалять их. Но нужно, чтобы данные в файле были всегда актуальны. Хранить весь набор данных в одном файле - не гут, после первой сотни тысяч - время работы с любым объектом будет невыносимо большим. А ведь еще нужно время на отрисовку информации... Короче, нужно искать другое решение. Вот с этим вопросом к вам уважаемый can4ec и обратился.... Добавлено через 1 минуту и 27 секунд can4ec, обрати внимание. Это сделать можно!! |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
||||
|
||||
| shimopus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: 1 Всего: 1 |
||||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
shimopus
ага, спасибо, протормозил нешуточно |
|||
|
||||
![]()
|
| Правила форума "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. |