zoukankan      html  css  js  c++  java
  • 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];
    }

    特记录以方便后面查看

  • 相关阅读:
    MR 原理
    Hadoop yarn任务调度策略介绍
    Hadoop 新 MapReduce 框架 Yarn 详解
    Hadoop 架构与原理
    Linux-top命令详解
    硬中断与软中断的区别
    Protocol_BGP
    Protocol_ISIS
    20条Linux命令面试问答
    Protocol_OSPF
  • 原文地址:https://www.cnblogs.com/duanjt/p/7479064.html
Copyright © 2011-2022 走看看