Вы имеете в виду NIO, введенный в Java 5.0 7 лет назад? Или Асинхронное добавление NIO в Java 7?
Короче говоря, простой ответ заключается в том, что использование BufferedReader намного, намного проще и не намного медленнее.
Если вы должны использовать ByteBuffer, или вы хотите, чтобы последний бит производительности, вы должны читать по одному байту за раз. (И вы справились с ситуацией, когда была прочитана только часть строки, поэтому вы можете исчерпать данные в ByteBuffer, прежде чем достигнете новой строки)