Можно ли искать файл с объектами в Java? - PullRequest
3 голосов
/ 13 мая 2011

Я прочитал из ORACLE следующего бит:

Могу ли я выполнять методы для сжатых версий моих объектов, например, isempty (zip (serial (x)))? *

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

Итак, я получил эту идею, скажем, если у меня есть массив символов 4M чего-то длинного, могу ли я сжать его до нескольких сотен байтов, используя GZIPOutputStream, а затем отобразить весь файл в память и сделать случайный поиск по нему, сравнивая биты? Скажем, если я ищу последовательность символов "abcd", могу ли я как-нибудь получить битовую последовательность сжатой версии "abcd", а затем просто найти ее в файле? Спасибо.

1 Ответ

1 голос
/ 13 мая 2011

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

Если вы хотите получить произвольный доступ к данным, вы можете разбить строку на более мелкие секции. Таким образом, вам нужно только распаковать относительно короткий раздел данных.

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