Многослойный gzip произвольный доступ файла (в Java)

Это может быть достигнуто с расположением таблицы по умолчанию для statusStrip путем простого помещения другой маркировки между текущей маркировкой и progressBar и установило свойство Spring на истинный.

6
задан toluju 4 August 2009 в 01:32
поделиться

2 ответа

Структура GZIP, как вы уже поняли, не поддерживает произвольный доступ.

Вы можете сделать так, как вы описываете, а затем, если вы столкнетесь с ошибкой в ​​декомпрессоре, сделать вывод, что найденная вами подпись была действительно сжатыми данными.
Если вы закончите распаковку, то легко проверить действительность только что распакованного потока с помощью CRC32.

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

Это будет достаточно быстро для файлов размером менее 100 КБ. Предположительно, если бы у вас было 10 файлов размером около 100 КБ каждый, на современном процессоре это, вероятно, было бы сделано за 2 секунды. Вот что я имею в виду под словом «довольно быстро». Но только вы знаете требования к производительности вашего приложения.

У вас есть класс GZipInputStream? В таком случае вы на полпути.

1
ответ дан 17 December 2019 в 07:07
поделиться

Формат файла BGZF , совместимый с GZIP, был разработан биологами.

(...) Преимущество BGZF перед обычным gzip заключается в том, что BGZF позволяет выполнять поиск без необходимости сканировать весь файл до {{1} } искомую позицию.

В http://picard.svn.sourceforge.net/viewvc/picard/trunk/src/java/net/sf/samtools/util/ посмотрите на BlockCompressedOutputStream и BlockCompressedInputStream.java.

3
ответ дан 17 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: