A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

1黑马币

ByteArrayOutputStream是我们经常用到的Java API,很多学生并不知道它到底有什么用。今天深圳问答网学生提出了这个问题哦,老师回答了这个问题,现在整理出来学习一下。





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

  1. public static void main(String[] args) {
  2.     int a = 0;
  3.     int b = 1;
  4.     int c = 2;
  5.     ByteArrayOutputStream bout = new ByteArrayOutputStream();
  6.     bout.write(a);
  7.     bout.write(b);
  8.     bout.write(c);
  9.     byte[] buff = bout.toByteArray();

  10.     for (int i = 0; i < buff.length; i++)
  11.         System.out.println(buff[i]);
  12. System.out.println("***********************";

  13.     ByteArrayInputStream bin = new ByteArrayInputStream(buff);
  14.     while ((b = bin.read()) != -1) {
  15.         System.out.println(b);
  16.     }
  17. }
复制代码

如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作。
综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

  1. public static void main(String[] args) throws IOException {
  2.     ByteArrayOutputStream bout = new ByteArrayOutputStream();
  3.     DataOutputStream dout = new DataOutputStream(bout);
  4.     String name = "xxy";
  5.     int age = 84;
  6.     dout.writeUTF(name);
  7.     dout.writeInt(age);
  8.     byte[] buff = bout.toByteArray();
  9.     ByteArrayInputStream bin = new ByteArrayInputStream(buff);
  10.     DataInputStream dis = new DataInputStream(bin);
  11.     String newName = dis.readUTF();
  12.     int newAge = dis.readInt();
  13.     System.out.println(newName + ":" + newAge);
  14. }
复制代码


深圳校区除了全国独有问答网,就业老师面试服务,还有更多神秘惊喜等着你,咨询热线:0755-66689855



7 个回复

正序浏览
cj286 中级黑马 2015-12-26 14:36:31
7#
用于临时存放数据
回复 使用道具 举报
学到了,赞一个。
回复 使用道具 举报
感觉写的很好  学习到了!
回复 使用道具 举报
越努力的人会越幸运
回复 使用道具 举报
学习了!谢谢!
回复 使用道具 举报
赞一个,这个我们在IO流最后一天也学到了
回复 使用道具 举报
写的挺好的  感觉自己又学习到了!赞!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马