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];
    }

    特记录以方便后面查看

  • 相关阅读:
    小数化分数2
    Sum of divisors
    Subsequence
    Lowest Bit
    Specialized Four-Digit Numbers
    Hunters
    Pet
    测试你是否和LTC水平一样高
    Bank Interest
    bzoj 1295
  • 原文地址:https://www.cnblogs.com/duanjt/p/7479064.html
Copyright © 2011-2022 走看看