Если ваш файл не имеет строгой структуры (то есть фиксированное количество символов в строке или в каком-то логическом блоке, как заметил Мартин), то вы не можете использовать преимущества RandomAccessFile.
В этом случае вы можете попытаться разбить ваш огромный файл на более мелкие файлы с фиксированным количеством строк в каждом (например, 1000). В этом случае, когда пользователь хочет видеть строки с 1800 до 2100, вам нужно прочитать только 2 файла (из нескольких тысяч, вероятно, если вы скажете, что общий размер составляет около 400 Мб).
Если вы не можете сделать это, единственное, что вы можете сделать, - это использовать NIO, чтобы хотя бы немного повысить производительность.