之前列出了Chuck协议格式,现在做一个能读Chuck的代码:

public class IOLine {private byte[] data;private String line;public byte[] getData() {return data;}public void setData(byte[] data) {this.data = data;}public String getLine() {return line;}public void setLine(String line) {this.line = line;}}
 public static byte[] readTrunck(InputStream is) throws Exception{ByteArrayOutputStream dos = null;dos = new ByteArrayOutputStream();try{DataInputStream dis = new DataInputStream(is);IOLine line = HttpUtil.readLine(is);
//          LogUtil.debug("line="+line.getLine());int len = HttpUtil.readDataLen(line);while(len>0){byte tmp[] = new byte[len];dis.readFully(tmp);dos.write(tmp);line = HttpUtil.readLine(is);if("".equals(line.getLine().trim())){line = HttpUtil.readLine(is);}
//              LogUtil.debug("line="+line.getLine());len = HttpUtil.readDataLen(line);}return dos.toByteArray();}finally{try{dos.close();}catch(Exception e){}}}
 /*** 读一行* @param is* @return* @throws Exception*/public static IOLine readLine(InputStream is) throws Exception{int b = 0;IOLine ret = new IOLine();byte[] data = new byte[MAX_DATA_SIZE];int k = 0;boolean f = false;boolean s = false;try{while( (b=is.read()) != -1){data[k++] = (byte) b;if('\r'== b){f = true;}else if(f && '\n' == b){s = true;break;}else{f = false;}}}catch(Exception e){}byte[] d = new byte[k];System.arraycopy(data, 0, d, 0, k);if(s){ret.setLine(new String(d));}ret.setData(d);return ret;}

当数据流读到数据区时,直接调用readTrunck方法,传入数据流,返回所有Chuck整合的字节数组。

Java实现读Chuck数据相关推荐

  1. java mapreduce 读hbase数据 写入hdfs 含maven依赖

    mapreduce 读hbase数据 写入hdfs java代码如下 import com.google.common.collect.Lists; import java.io.FileInputS ...

  2. java单元测试读文件数据_如何将文本文件资源读入Java单元测试?

    本问题已经有最佳答案,请猛点这里访问. 我有一个单元测试需要使用位于src/test/resources/abc.xml中的XML文件.把文件的内容放到String中最简单的方法是什么? 另外,sta ...

  3. java将读到的换行符存储到数据表中_Java学习之路013天

    第27次 学习主题:容器遍历以及IO流 学习目标: 1 掌握容器的遍历 2 掌握IO流的基本概念,结构,以及文件字节流 对应视频: http://www.itbaizhan.cn/course/id/ ...

  4. Java入门算法(数据结构篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

  5. 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...

    作者:T-Birds blog.csdn.net/weixin_36634753/article/details/90815755 共享锁(S锁): 又称为读锁,可以查看但无法修改和删除的一种数据锁. ...

  6. java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置

    java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...

  7. java 同时修改同一个数据_Java 语言中锁的设计与应用

    前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK 8).使用场景进行举例,为读者介绍主流锁的知识点,以及不同的 ...

  8. java实现hdf5表数据的动态逐条追加

    示例代码如下: package h5.all.demo;import java.io.File; import java.io.FileReader; import java.io.LineNumbe ...

  9. java用输入流创建数据文件_Java实现文件写入——输入输出流(IO流)

    输入输出含义和意义: 输入和输出功能是Java对程序处理数据能力的提高,java以流的形式处理数据. 流是一组有序的数据序列,根据操作类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据 ...

  10. spark读Hbase数据集成Hbase Filter(过滤器)

    文章目录 过滤器简介 spark 读Hbase集成Filter TableInputFormat 源码 代码示例 基于hbase版本2.3.5 过滤器简介 Hbase 提供了种类丰富的过滤器(filt ...

最新文章

  1. (一次性搞定)ORB_SLAM2地图保存与加载
  2. 深入理解c#(第三版)(文摘)
  3. Lecture 6 Order Statistics
  4. python——面向对象相关
  5. Codeforces686C【dfs】
  6. CSU 1803 2016(数论)
  7. Docker容器commit安装kali工具集
  8. iOS----集成ijkplayer视频直播
  9. linux 查看内存和cup使用率
  10. 4站地铁50多分钟,百度地图怎么算的
  11. 计算机将图像数字化的原理,图像数字化
  12. android支付宝免密支付功能,手机支付宝如何将免密支付功能关闭掉
  13. 将多张图片合并为一张图片
  14. 重装win10系统(纯净win10系统)
  15. 三个表内连接查询创建视图
  16. exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
  17. 浅谈SAP顾问未来十年在中国的发展前景
  18. chrome://flags是什么?
  19. UVa 10019 - Funny Encryption Method
  20. 深度学习21天实战caffe学习笔记《3 :准备Caffe环境》

热门文章

  1. 语法高亮自定义颜色主题配置(Code::Blocks)
  2. Unity Timeline的使用
  3. 社会心理学(第8版)
  4. vm linux安装增强功能,VirtualBox虚拟机CentOS安装增强功能Guest Additions(示例代码)
  5. [大数据技术] 淘宝双11数据分析与预测实验
  6. Docker容器之网络管理、端口映射、容器间的互联、Dockerfile完成镜像封装
  7. 瑞幸的野望,小鹿茶的突袭
  8. 你一事无成,还在那里傻乐
  9. 【nowcoder 110246】Dima and Salad
  10. 阿沐帮大家总结了自动化基本操作——selenium_常见技巧