ByteArrayOutputStream和ByteArrayInputStream详解

http://blog.sina.com.cn/s/blog_4c341e2101009f1j.html

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

ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组。

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

import java.io.*;

public class test {
 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封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

import java.io.*;

public class test {
 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.sina.com.cn/s/blog_4fb27fd80100obuc.html

ByteArrayOutputStream 类使用实例

(2011-01-01 18:36:27)
标签:

bytearray

outputstream

it

分类: Java项目

import java.util.*;
02import java.io.*;
03  
04public class Person implements Serializable, ObjectInputValidation {
05  
06  static Map thePeople = new HashMap();
07  
08  private String name;
09  private String ss;
10  
11  public Person(String name, String ss) {
12    this.name = name;
13    this.ss = ss;
14    thePeople.put(ss, name);
15  }
16  
17  private void readObject(ObjectInputStream in)
18   throws IOException, ClassNotFoundException {
19    in.registerValidation(this, 5);
20    in.defaultReadObject();
21  }
22  
23  public void validateObject() throws InvalidObjectException {
24    if (thePeople.containsKey(this.ss)) {
25      throw new InvalidObjectException(this.name + " already exists");
26    }
27    else {
28      thePeople.put(this.ss, this.name);
29    }
30  }
31   
32  public String toString() {
33    return this.name + "\t" + this.ss;
34  }
35   
36  public static void main(String[] args)
37   throws IOException, ClassNotFoundException {
38   
39    Person p1 = new Person("Rusty", "123-45-5678");
40    Person p2 = new Person("Beth" "321-45-5678");
41    Person p3 = new Person("David", "453-45-5678");
42    Person p4 = new Person("David", "453-45-5678");
43   
44    Iterator iterator = thePeople.values().iterator();
45    while (iterator.hasNext()) {
46      System.out.println(iterator.next());
47    }
48     
49    ByteArrayOutputStream bout = new ByteArrayOutputStream();
50    ObjectOutputStream oout = new ObjectOutputStream(bout);
51    oout.writeObject(p1);
52    oout.writeObject(p2);
53    oout.writeObject(p3);
54    oout.writeObject(p4);
55    oout.flush();
56    oout.close();
57     
58    ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
59    ObjectInputStream oin = new ObjectInputStream(bin);
60    try {
61      System.out.println(oin.readObject());
62      System.out.println(oin.readObject());
63      System.out.println(oin.readObject());
64      System.out.println(oin.readObject());
65    }
66    catch (InvalidObjectException ex) {
67      System.err.println(ex);
68    }
69    oin.close();
70  
71    // now empty the map and try again
72    thePeople.clear();
73    bin = new ByteArrayInputStream(bout.toByteArray());
74    oin = new ObjectInputStream(bin);
75    try {
76      System.out.println(oin.readObject());
77      System.out.println(oin.readObject());
78      System.out.println(oin.readObject());
79      System.out.println(oin.readObject());
80    }
81    catch (InvalidObjectException ex) {
82      System.err.println(ex);
83    }
84    oin.close();
85     
86    iterator = thePeople.values().iterator();
87    while (iterator.hasNext()) {
88      System.out.println(iterator.next());
89      
90  }
91}
import java.util.*;
02import java.io.*;
03  
04public class Person implements Serializable, ObjectInputValidation {
05  
06  static Map thePeople = new HashMap();
07  
08  private String name;
09  private String ss;
10  
11  public Person(String name, String ss) {
12    this.name = name;
13    this.ss = ss;
14    thePeople.put(ss, name);
15  }
16  
17  private void readObject(ObjectInputStream in)
18   throws IOException, ClassNotFoundException {
19    in.registerValidation(this, 5);
20    in.defaultReadObject();
21  }
22  
23  public void validateObject() throws InvalidObjectException {
24    if (thePeople.containsKey(this.ss)) {
25      throw new InvalidObjectException(this.name + " already exists");
26    }
27    else {
28      thePeople.put(this.ss, this.name);
29    }
30  }
31   
32  public String toString() {
33    return this.name + "\t" + this.ss;
34  }
35   
36  public static void main(String[] args)
37   throws IOException, ClassNotFoundException {
38   
39    Person p1 = new Person("Rusty", "123-45-5678");
40    Person p2 = new Person("Beth" "321-45-5678");
41    Person p3 = new Person("David", "453-45-5678");
42    Person p4 = new Person("David", "453-45-5678");
43   
44    Iterator iterator = thePeople.values().iterator();
45    while (iterator.hasNext()) {
46      System.out.println(iterator.next());
47    }
48     
49    ByteArrayOutputStream bout = new ByteArrayOutputStream();
50    ObjectOutputStream oout = new ObjectOutputStream(bout);
51    oout.writeObject(p1);
52    oout.writeObject(p2);
53    oout.writeObject(p3);
54    oout.writeObject(p4);
55    oout.flush();
56    oout.close();
57     
58    ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
59    ObjectInputStream oin = new ObjectInputStream(bin);
60    try {
61      System.out.println(oin.readObject());
62      System.out.println(oin.readObject());
63      System.out.println(oin.readObject());
64      System.out.println(oin.readObject());
65    }
66    catch (InvalidObjectException ex) {
67      System.err.println(ex);
68    }
69    oin.close();
70  
71    // now empty the map and try again
72    thePeople.clear();
73    bin = new ByteArrayInputStream(bout.toByteArray());
74    oin = new ObjectInputStream(bin);
75    try {
76      System.out.println(oin.readObject());
77      System.out.println(oin.readObject());
78      System.out.println(oin.readObject());
79      System.out.println(oin.readObject());
80    }
81    catch (InvalidObjectException ex) {
82      System.err.println(ex);
83    }
84    oin.close();
85     
86    iterator = thePeople.values().iterator();
87    while (iterator.hasNext()) {
88      System.out.println(iterator.next());
89      
90  }
91}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值