在我的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();
}
答案 0 :(得分:1)
这是因为OutputStream类是一个抽象类。你无法使用new关键字从抽象类创建实例而没有实现。
为什么不使用ByteArrayOutputStream
代替OutputStream
答案 1 :(得分:0)
在我看来,好像你想要的不是任何一个,而只是一个BufferedReader
,这整个方法简化为return reader.readLine();
但我不知道你为什么这么做发送长度字和行终止符。考虑一下你的应用程序协议。