zoukankan      html  css  js  c++  java
  • 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流体系总结

  • 相关阅读:
    96. Unique Binary Search Trees1和2
    576. Out of Boundary Paths
    686. Repeated String Match判断字符串重复几次可以包含另外一个
    650. 2 Keys Keyboard
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    CISSP 考试经验分享
    2019-2020 ICPC Asia Hong Kong Regional Contest J—Junior Mathematician 数位dp
  • 原文地址:https://www.cnblogs.com/bfcs/p/10426366.html
Copyright © 2011-2022 走看看