Не проверено, но, вероятно, самый быстрый механизм - сначала взять ключ поиска и закодировать его как файл.
Например, если вы знаете, что это файл UTF-8, возьмите ключ и закодируйте егоиз строки (которая это UTF-16) в байтовый массив, который является UTF-8.Это важно, потому что кодируя до представления файла, вы кодируете только ключ.Использование стандартных Java Readers идет другим путем - конвертирует файл в UTF-16.
Теперь, когда у вас есть правильный ключ, в байтах используйте NIO для создания MappedByteBuffer для файла,Это сопоставляет файл с пространством виртуальной памяти.
Наконец, реализуйте алгоритм Бойера-Мура для поиска строки, используя байты ключа против байтов файла через сопоставленное отображение.region,
Там может быть более быстрый путь, но это решает большую часть проблем с поиском текстового файла в Java.Он использует виртуальную машину, чтобы избежать копирования больших фрагментов файла, и пропускает этап преобразования любой кодировки файла в UTF-16, который Java использует внутри.