Проблема в том, что данные, закодированные символами, не могут быть доступны таким образом.т.е. вам нужно знать, где находятся границы между символами.
Стоимость доступа к файлу и декодирования символов, вероятно, будет намного дороже, чем то, как вы его читаете, поэтому я бы использовал BufferedReader,гораздо проще.
например, скажем, вы хотите прочитать с 1000-го байта.Вы можете сделать это, но вы не будете знать, является ли 1000-й байт частью многобайтового символа или нет.
Если вы можете предположить, что все символы являются байтами, вся проблема гораздо проще, иЕсли вам не нужен CharBuffer, вы можете получить доступ к ByteBuffer напрямую, что будет намного быстрее.