Важно прочитать всю ошибку, а не только сообщение.Часто реальная информация содержится в имени исключения, а не в тексте, связанном с ним.
Вы получите сообщение об ошибке, если файл пуст, так как нет первого байта.
Примечание.Использует предполагает ASCII 7-битные символы.Если вы хотите использовать символы ISO-8859-1, вы можете использовать (char) (byteBuffer.get() & 0xFF)
Однако, если у вас есть текст плана, вы можете обнаружить, что использование строк проще и не намного медленнее.Например, вы можете прочитать файл размером 50 МБ в виде текста менее чем за секунду.Я бы использовал файл с отображением памяти, только если он слишком длинный.