java 字节数组流

字节数组流

ByteArrayInutStream 和 ByteArrayOutputStream

1) 节点流

2) 数据源或目的地为:字节数组
3) 只有字节流,没有字符流

作用:

提高空间利用率

压缩内容,在网络传输时,能有效压缩传输数据的大小,从而提高效率

------------------------------------------------------------------------------------------------------------------------

下面的例子把java对象存为字节数组,再把字节数组读出来。

 1 import java.io.ByteArrayInputStream;
 2 import java.io.ByteArrayOutputStream;
 3 import java.io.DataOutputStream;
 4 import java.io.IOException;
 5 import java.io.ObjectInputStream;
 6 import java.io.ObjectOutputStream;
 7 import java.util.Date;
 8 
 9 public class Test {
10     public static void main(String[] args) {
11         byte [] buf=write();//调用写对象的方法
12         //调用读对象的方法
13         read(buf);
14     }
15     public static byte[] write(){
16         //创建字节数组流对象
17         ByteArrayOutputStream baos=null;
18         ObjectOutputStream oos=null;
19         
20         try {
21             baos=new ByteArrayOutputStream();//创建字节数组流对象,目的地是字节数组,底层创建一个长度数为32的字节数组
22             oos=new ObjectOutputStream(baos);
23             oos.writeInt(98);
24             oos.writeDouble(98.5);
25             oos.writeChar('a');
26             oos.writeBoolean(false);
27             oos.writeObject(new Date(1000));
28         } catch (IOException e) {
29             // TODO Auto-generated catch block
30             e.printStackTrace();
31         }finally{
32             //关闭流
33             if (oos!=null) {
34                 try {
35                     oos.close();
36                 } catch (IOException e) {
37                     // TODO Auto-generated catch block
38                     e.printStackTrace();
39                 }
40             }
41         }
42         
43         return baos.toByteArray();
44     }
45     public static void read(byte [] buf){
46         ByteArrayInputStream bais=null;
47         ObjectInputStream ois=null;
48         //创建对象
49         try {
50             bais=new ByteArrayInputStream(buf); //数据源是byte类型的数组
51             ois=new ObjectInputStream(bais);
52             
53             //读数据
54             System.out.println(ois.readInt());
55             System.out.println(ois.readDouble());
56             System.out.println(ois.readChar());
57             System.out.println(ois.readBoolean());
58             System.out.println(ois.readObject());
59         } catch (ClassNotFoundException e) {
60             // TODO Auto-generated catch block
61             e.printStackTrace();
62         } catch (IOException e) {
63             // TODO Auto-generated catch block
64             e.printStackTrace();
65         }finally{
66         
67             //关闭流
68             if(ois!=null){
69                 try {
70                     ois.close();
71                 } catch (IOException e) {
72                     // TODO Auto-generated catch block
73                     e.printStackTrace();
74                 }
75             }
76         }
77     }
78 }
View Code

设计模式_装饰器模式-------->https://www.cnblogs.com/xrq730/p/4908940.html

猜你喜欢

转载自www.cnblogs.com/bfcs/p/10426366.html