Java从内存流中读取byte数组

Java中通过servlet接收二进制数据,然后将二进制数据流读取为byte数组。开始使用:
byte[] bs = new byte[request.getContentLength()];
request.getInputStream().read(bs);
return bs;
数据量小的时候没有问题,数据量大了就读取不完整了,后来按如下修改即可。

/**
* 获取客户提交上来的数据
* @param request
* @return
*/
private byte[] getData(HttpServletRequest request) {
try {
// byte[] bs = new byte[request.getContentLength()];
// request.getInputStream().read(bs);
// return bs; ServletInputStream sis = request.getInputStream();
ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100];
int rc = 0;
while ((rc = sis.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in2b = swapStream.toByteArray();
return in2b;
} catch (IOException e) {
LogHelper.logger.error("接收数据失败", e);
}
return new byte[0];
}

特记录以方便后面查看

上一篇:CoreOS 835.12.0 稳定版安装


下一篇:ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践