Could we use `reader.read(CharBuffer)` instead? Looks like a more efficient version.