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

 

IO流体系总结

转载于:https://www.cnblogs.com/bfcs/p/10426366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值