Java从内存流中读取byte数组

Posted 段江涛IT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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];
}

 

特记录以方便后面查看





以上是关于Java从内存流中读取byte数组的主要内容,如果未能解决你的问题,请参考以下文章

java中,ImputStream类中的read(byte []b)方法

字符输入流读取文本文件ReaderFileReaderBufferedReader

字符输入流读取文本文件ReaderFileReaderBufferedReader

java.io.ByteArrayInputStream

java如何直接从流中读取excel的文件内容?Stream

JAVA文件读写操作