Java (ME) библиотека для файлов записей фиксированной длины - PullRequest
1 голос
/ 07 января 2010

Я ищу библиотеку, которая может работать на Java ME (Foundation Profile 1.1, CDC) и позволяет мне в основном делать что-то вроде

FILE OF type;

в Паскале.

Справочная информация: мне нужно иметь большой (около 100 МБ) набор из 500 000 записей для быстрого поиска по известному значению индекса. Я действительно должен написать это сам? Базы данных, такие как Derby, слишком велики и содержат множество функций (хранимые процедуры, кто-нибудь?), Которые мне не нужны.

В идеале я хотел бы просто определить класс с несколькими полями, основанными на примитивных типах и строках, как объект-держатель значений и сохранить их в файле, который я мог бы - в случае необходимости - восстановить вручную. Вот почему я не слишком увлечен сериализацией. Из прошлого я несколько раз боролся с поврежденными файлами двоичных данных, которые вообще не могли быть восстановлены.

Ответы [ 2 ]

0 голосов
/ 01 марта 2010

После долгого осмотра я наконец пришел к xBaseJ из SourceForge. Он опирается на java.nio, который обычно не включается в профиль CDC JavaME, но у нас был подрядчик, который перенес соответствующие части на мобильную виртуальную машину J9. Вооружившись этим, мы теперь создаем наше приложение поверх файлов, совместимых с DBase III. Помимо того, что это довольно быстро, даже на мобильной платформе, это дает нам доступ к множеству инструментов, которые могут справиться с этим форматом, без необходимости учить нетехнических людей об инструменте администрирования БД на основе JDBC, который им не нравится

Недавно была выпущена целая электронная книга под названием «Минимум, который вам нужно знать о xBaseJ», которая также доступна бесплатно на веб-сайте проекта.

0 голосов
/ 09 января 2010

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

Если файл должен содержать строку заголовка, то это просто вопрос использования рефлексии / самоанализа, и для его реализации не требуется больше одного дня.

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

Рассматривали ли вы альтернативные методы сериализации текста, такие как CSV, JSON или XML, используя XStream? Это позволяет избежать риска бинарного повреждения и ускорить работу, но также может привести к увеличению объема используемой памяти, что может быть проблемой при настройке на мобильное устройство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...