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

    特记录以方便后面查看

  • 相关阅读:
    打造分布式爬虫
    vue入门-常用指令操作
    爬虫练习-爬取小说
    爬虫项目-爬取亚马逊商品信息
    爬虫框架_scrapy1
    CIE-LUV是什么颜色特征
    多目标跟踪baseline methods
    时间序列识别代码调试版本1
    拓扑空间1
    ps cs6破解
  • 原文地址:https://www.cnblogs.com/duanjt/p/7479064.html
Copyright © 2020-2023  润新知