чтение / запись в файл большого размера на java

У меня есть двоичный файл в следующем формате:

[N bytes identifier & record length] [n1 bytes data] 
[N bytes identifier & record length] [n2 bytes data] 
[N bytes identifier & record length] [n3 bytes data]

как вы видите, у меня есть записи с разной длиной. в каждой записи у меня есть фиксированные N байтов, которые содержат идентификатор и длину данных в записи .

этот файл очень большой и может содержать 3 миллиона записей.

Я хочу открыть этот файл приложением и позволить пользователю просматривать и редактировать записи. (Вставить / обновить / удалить записи)

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

  • есть ли библиотека (библиотека java), которая поможет мне реализовать это требование?

  • какие-либо рекомендации или опыт, которые вы считаете полезными?

----------------- РЕДАКТИРОВАТЬ ----------------------------- -----------------

Спасибо за руководства и предложения,

дополнительная информация:

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

do u still рекомендовать базу данных вместо обычного индексного файла?

----------------- ВТОРОЕ РЕДАКТИРОВАНИЕ -------------- --------------------------------

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

Большое спасибо

8
задан mhshams 4 April 2011 в 02:12
поделиться