【发布时间】:2013-11-18 01:52:33
【问题描述】:
我有通过套接字发送的数据包,这些数据包前面是长度标头。因此,每次传输都带有 4 个字节的长度信息,然后是数据包。因此,我必须限制我的read() 永远不会超过长度,这样我就不会意外读取行中的下一个数据包。
InputStream in 是输入流,ByteArrayOutputStream byteStream 是我将传入数据包写入的流,int len 是传入传输的长度。
这是我想出的:
for (int i = 0; i < len; i++) {
byteStream.write(in.read());
}
这绝对是可怕的;逐个读取字节。我希望看看是否有更好的方法来使用缓冲区(有点类似于复制流的规范方式)。
【问题讨论】:
-
根据您的要求将字节数读入数组。如果您知道数据包的最大长度,它会变得更容易,因为您只需要声明一次数组,否则您需要为每个数据包创建一个新数组,看看
InputStream#read(byte[], int, int)
标签: java java-8 java-stream