BufferedReader para ByteBuffer grande?

Existe uma maneira de ler um ByteBuffer com um BufferedReader sem ter que transformá-lo em uma String primeiro? Eu quero ler através de um ByteBuffer bastante grande como linhas de texto e por razões de desempenho que eu quero evitar escrevê-lo para o disco. Chamar toString no ByteBuffer não funciona porque a String resultante é muito grande (ele lança java.lang.OutOfMemoryError: espaço de heap Java). Eu teria pensado que haveria algo na API para envolver um ByteBuffer em um leitor adequado, mas não consigo encontrar nada adequado.

Aqui está um exemplo de código abreviado que ilustra o que estou fazendo):

<code>// input stream is from Process getInputStream()
public String read(InputStream istream)
{
  ReadableByteChannel source = Channels.newChannel(istream);
  ByteArrayOutputStream ostream = new ByteArrayOutputStream(bufferSize);
  WritableByteChannel destination = Channels.newChannel(ostream);
  ByteBuffer buffer = ByteBuffer.allocateDirect(writeBufferSize);

  while (source.read(buffer) != -1)
  {
    buffer.flip();
    while (buffer.hasRemaining())
    {
      destination.write(buffer);
    }
    buffer.clear();
  }

  // this data can be up to 150 MB.. won't fit in a String.
  result = ostream.toString();
  source.close();
  destination.close();
  return result;
}

// after the process is run, we call this method with the String
public void readLines(String text)
{
  BufferedReader reader = new BufferedReader(new StringReader(text));
  String line;

  while ((line = reader.readLine()) != null)
  {
    // do stuff with line
  }
}
</code>

questionAnswers(3)

yourAnswerToTheQuestion