您的位置:首页 > 编程语言 > Java开发

解决InputStream.read读取数据出现丢失的情况

2018-04-09 09:24 423 查看
InputStream.read(byte[] b)

InputStream.read(byte[] b,int off,int len)
这两者都可批量读取数据,进入byte[]缓存。
但是即便是实现给定好byte[]的长度,指定长度进行读取,也不一定能完全读取数据。
这里的做法可用以下:                byte[] bodyReceived = new byte[dataLen];
int pos = 0;
while (pos < dataLen && -1 != (readLen = dataIn.read(bodyReceived, pos, dataLen - pos))) {
pos += readLen;
}
message = new String(bodyReceived, encode).trim();int pos用于记录当前已经读取了多少长度
int dataLen用于记录本次读取了多少长度,记录后累加进pos中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java io
相关文章推荐