ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。具体用法如下: 
ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组

ByteArrayInputStream: 可以将字节数组转化为输入流

public static void main(String[] args) {
    int a = 0;
    int b = 1;
    int c = 2;
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    bout.write(a);
    bout.write(b);
    bout.write(c);
    byte[] buff = bout.toByteArray();
    for (int i = 0; i < buff.length; i++)
        System.out.println(buff[i]);
    System.out.println("***********************");
    ByteArrayInputStream bin = new ByteArrayInputStream(buff);
    while ((b = bin.read()) != -1) {
        System.out.println(b);
    }
}

如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.

综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

public static void main(String[] args) throws IOException {
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    DataOutputStream dout = new DataOutputStream(bout);
    String name = "xxy";
    int age = 84;
    dout.writeUTF(name);
    dout.writeInt(age);
    byte[] buff = bout.toByteArray();
    ByteArrayInputStream bin = new ByteArrayInputStream(buff);
    DataInputStream dis = new DataInputStream(bin);
    String newName = dis.readUTF();
    int newAge = dis.readInt();
    System.out.println(newName + ":" + newAge);
}

  

转载: http://blog.chinaunix.net/uid-9789791-id-1997411.html

最新文章

  1. iOS网络2——NSURLSession使用详解
  2. Xcode模拟器不显示SDK版本,反而显示设备ID的解决办法
  3. 高性能网络server--I/O复 select poll epoll_wait之间的差
  4. C# 弱引用WeakReferance
  5. JavaScript一个whenReady函数,监听及注册事件
  6. CodeSmith(C#)简单示例及相关小知识
  7. Python 项目实践三(Web应用程序)第四篇
  8. 为什么Kafka速度那么快
  9. 为RecyclerView打造通用Adapter
  10. 批量注册当前文件夹中的dll和ocx
  11. 关于MySQL卸载重新安装的问题
  12. python 通用字典方法
  13. 洛谷P3201 [HNOI2009]梦幻布丁(链表 + 启发式合并)
  14. 免费申请 Github 私有仓库--学生和教育人士的福利
  15. Netty--使用TCP协议传输文件
  16. JS 毫秒日期相互转换 JS获取 今天 明天 昨天的日期
  17. springmvc重定向请求。
  18. mysql更新返回值问题(更新内容跟之前内容一样,返回0)
  19. 阿里云ECS下基于Centos7.4安装MySQL5.7.20
  20. RPM包的使用

热门文章

  1. Lintcode--007(不同的子序列)
  2. 编译cwm-recovery(含部分修改步骤)[转]
  3. Gson JsonParser的使用
  4. cf C. Insertion Sort
  5. ASP.NET页面事件顺序
  6. Qt在Mac OS X下的编程环境搭建
  7. Cmake Error: your compiler &quot;cl&quot; was not Found .etc
  8. Linux企业级项目实践之网络爬虫(22)——编写爬虫系统服务控制脚本
  9. DateTime字段控件值显示短格式的做法
  10. 微软 Dynamics AX 学习步骤