在我的readMessage函数中,收到错误消息“ OutputStream是抽象的;无法实例化”。我应该使用哪种数据类型来存储读取的数据?请忽略返回值是String。

private String readMessage() throws IOException {
  byte[] messageChunk = new byte[1024];
  int bytesRead = 0;
  OutputStream messageData = new OutputStream();

  boolean end = false;

  while ( !end ) {
    bytesRead = in.read(messageChunk);
    if ( bytesRead > 2 && messageChunk[bytesRead - 2] == '\r' ) end = true; // TODO: is -2 correct?
    else if ( bytesRead == 1 && messageChunk[bytesRead - 1] == '\n' ) end = true;
    messageData.write(messageChunk, 0, bytesRead);
  }

  return messageData.toString();
}

最佳答案

这是因为OutputStream类是一个抽象类。您不能在没有实现的情况下使用new关键字从抽象类创建实例。

为什么不使用ByteArrayOutputStream而不是OutputStream

10-02 06:57