BufferedReader для большого ByteBuffer?

Есть ли способ прочитать ByteBuffer с BufferedReader без необходимости сначала превращать его в строку? Я хочу прочитать довольно большой ByteBuffer в виде строк текста, и по соображениям производительности я хочу избежать записи его на диск. Вызов toString для ByteBuffer не работает, поскольку результирующая строка слишком велика (она выбрасывает java.lang.OutOfMemoryError: пространство кучи Java). Я бы подумал, что в API будет что-то, чтобы обернуть ByteBuffer в подходящий ридер, но я не могу найти ничего подходящего.

Вот пример сокращенного кода, иллюстрирующий то, что я делаю):

<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>

Ответы на вопрос(3)

Ваш ответ на вопрос