Losowy dostęp do wielu plików gzip (w Javie)

To może się znaleźć w sferze „nierealne” lub „naprawdę nie warte wysiłku”, ale tutaj.

Próbuję uzyskać losowy dostęp do rekordów przechowywanych w wieloczęściowym pliku gzip. W szczególności pliki, które mnie interesują, są skompresowaneHeretrix Pliki łukowe. (W przypadku, gdy nie jesteś zaznajomiony z wieloczęściowymi plikami gzip, specyfikacja gzip pozwala na łączenie wielu strumieni gzip w jednym pliku gzip. Nie udostępniają żadnych informacji słownikowych, jest to proste dołączanie binarne).

Myślę, że powinno być możliwe zrobienie tego poprzez szukanie pewnego przesunięcia w pliku, a następnie skanowanie w poszukiwaniu magicznych nagłówków gzip (tj. 0x1f8b, zgodnie zRFC) i spróbuj odczytać strumień gzip z następujących bajtów. Problem z tym podejściem polega na tym, że te same bajty mogą również pojawić się w rzeczywistych danych, więc poszukiwanie tych bajtów może doprowadzić do niepoprawnej pozycji, od której zacznie czytać strumień gzip. Czy istnieje lepszy sposób obsługi losowego dostępu, biorąc pod uwagę, że przesunięcia rekordów nie są znane a priori?

questionAnswers(2)

yourAnswerToTheQuestion