字节数组流
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 }
设计模式_装饰器模式-------->https://www.cnblogs.com/xrq730/p/4908940.html
IO流体系总结