Bei so großen dateien würde ich auch über einen Buffer lesen. Wenn man "in die Nähe" des Endes des Buffers kommt, muss man halt ein neues Stück lesen, und dabei ggf. das noch nicht untersuchte alte Bufferstück übernehmen.
Also Buffer lesen, Buffer überprüfen bis Buffergröße-Bytemustergröße, Rest an den Anfang kopieren, Buffer mit neuen Daten aus dem Stream befüllen. Das bis zum Ende der Datei.
Wie groß ist denn die Bytefolge? Wenn die etwas länger ist (d.h. z.B. 10 Bytes oder mehr), dann dürfte das Boyer-Moore-Verfahren eine deutliche Verschnellerung bedeuten. Das sit zwar eigentlich für die Stringsuche gedacht, funktioniert aber auch ganz gut (d.h. eigentlich noch besser) bei beliebigen Bytestreams.
_________________
We are, we were and will not be.