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)
04
public
class
Person
implements
Serializable, ObjectInputValidation {
06
static
Map thePeople =
new
HashMap();
11
public
Person(String name, String ss) {
14
thePeople.put(ss, name);
17
private
void
readObject(ObjectInputStream in)
18
throws
IOException, ClassNotFoundException {
19
in.registerValidation(
this
,
5
);
20
in.defaultReadObject();
23
public
void
validateObject()
throws
InvalidObjectException {
24
if
(thePeople.containsKey(
this
.ss)) {
25
throw
new
InvalidObjectException(
this
.name +
" already exists"
);
28
thePeople.put(
this
.ss,
this
.name);
32
public
String toString() {
33
return
this
.name +
"\t"
+
this
.ss;
36
public
static
void
main(String[] args)
37
throws
IOException, ClassNotFoundException {
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"
);
44
Iterator iterator = thePeople.values().iterator();
45
while
(iterator.hasNext()) {
46
System.out.println(iterator.next());
49
ByteArrayOutputStream bout =
new
ByteArrayOutputStream();
50
ObjectOutputStream oout =
new
ObjectOutputStream(bout);
58
ByteArrayInputStream bin =
new
ByteArrayInputStream(bout.toByteArray());
59
ObjectInputStream oin =
new
ObjectInputStream(bin);
61
System.out.println(oin.readObject());
62
System.out.println(oin.readObject());
63
System.out.println(oin.readObject());
64
System.out.println(oin.readObject());
66
catch
(InvalidObjectException ex) {
67
System.err.println(ex);
71
// now empty the map and try again
73
bin =
new
ByteArrayInputStream(bout.toByteArray());
74
oin =
new
ObjectInputStream(bin);
76
System.out.println(oin.readObject());
77
System.out.println(oin.readObject());
78
System.out.println(oin.readObject());
79
System.out.println(oin.readObject());
81
catch
(InvalidObjectException ex) {
82
System.err.println(ex);
86
iterator = thePeople.values().iterator();
87
while
(iterator.hasNext()) {
88
System.out.println(iterator.next());
04
public
class
Person
implements
Serializable, ObjectInputValidation {
06
static
Map thePeople =
new
HashMap();
11
public
Person(String name, String ss) {
14
thePeople.put(ss, name);
17
private
void
readObject(ObjectInputStream in)
18
throws
IOException, ClassNotFoundException {
19
in.registerValidation(
this
,
5
);
20
in.defaultReadObject();
23
public
void
validateObject()
throws
InvalidObjectException {
24
if
(thePeople.containsKey(
this
.ss)) {
25
throw
new
InvalidObjectException(
this
.name +
" already exists"
);
28
thePeople.put(
this
.ss,
this
.name);
32
public
String toString() {
33
return
this
.name +
"\t"
+
this
.ss;
36
public
static
void
main(String[] args)
37
throws
IOException, ClassNotFoundException {
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"
);
44
Iterator iterator = thePeople.values().iterator();
45
while
(iterator.hasNext()) {
46
System.out.println(iterator.next());
49
ByteArrayOutputStream bout =
new
ByteArrayOutputStream();
50
ObjectOutputStream oout =
new
ObjectOutputStream(bout);
58
ByteArrayInputStream bin =
new
ByteArrayInputStream(bout.toByteArray());
59
ObjectInputStream oin =
new
ObjectInputStream(bin);
61
System.out.println(oin.readObject());
62
System.out.println(oin.readObject());
63
System.out.println(oin.readObject());
64
System.out.println(oin.readObject());
66
catch
(InvalidObjectException ex) {
67
System.err.println(ex);
71
// now empty the map and try again
73
bin =
new
ByteArrayInputStream(bout.toByteArray());
74
oin =
new
ObjectInputStream(bin);
76
System.out.println(oin.readObject());
77
System.out.println(oin.readObject());
78
System.out.println(oin.readObject());
79
System.out.println(oin.readObject());
81
catch
(InvalidObjectException ex) {
82
System.err.println(ex);
86
iterator = thePeople.values().iterator();
87
while
(iterator.hasNext()) {
88
System.out.println(iterator.next());