加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ByteArrayOutputStream 类使用实例

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

bytearray

outputstream

it

分类: Java项目
import java.util.*;
02 import java.io.*;
03   
04 public 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.*;
02 import java.io.*;
03   
04 public 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 }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有