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.*;
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 }

 

你可能感兴趣的:(String,HashMap,iterator,Class,import,byte)