ObjectInputStream和ObjectOutputStream介绍_动力节点Java学院整理

  

ObjectInputStream和ObjectOutputStream的作用是,对基本数据和对象进行序列化操作支持。

  

创建“文件输出流”对应的ObjectOutputStream对象,该ObjectOutputStream对象能提供对“基本数据或对象”的持久存储;当我们需要读取这些存储的“基本数据或对象”时,可以创建“文件输入流”对应的ObjectInputStream,进而读取出这些“基本数据或对象”。

  

  

<强> ObjectOutputStream函数列表,
  

     //构造函数   ObjectOutputStream (OutputStream输出)//公共函数   空白close ()   空白defaultWriteObject ()   空白冲洗()   ObjectOutputStream。PutField putFields ()   空白重置()   空白useProtocolVersion (int版)   空写(int值)   空写(byte[]缓冲区,int抵消,int长度)   空白writeBoolean(布尔值)   空白writeByte (int值)   空白writeBytes(字符串值)   空白writeChar (int值)   空白writeChars(字符串值)   空白writeDouble(双值)   空白writeFields ()   空白writeFloat(浮点值)   空白writeInt (int值)   空白writeLong(长值)   最后的空白writeObject(对象对象)   空白writeShort (int值)   空白writeUTF(字符串值)   空白writeUnshared对象(对象)   ObjectInputStream函数列表//构造函数   ObjectInputStream (InputStream输入)   int可用()   空白close ()   空白defaultReadObject ()   int读(byte[]缓冲区,int抵消,int长度)   int read ()   布尔readBoolean ()   字节readByte ()   char readChar ()   双readDouble ()   ObjectInputStream。GetField readFields ()   浮动readFloat ()   空白readFully (byte [] dst)   空白readFully (byte [] dst, int抵消,int byteCount)   int readInt ()   字符串readLine ()   长readLong ()   最终对象readObject ()   短readShort ()   字符串readUTF ()   对象readUnshared ()   int readUnsignedByte ()   int readUnsignedShort ()   同步空白registerValidation (ObjectInputValidation对象,int优先)   int skipBytes (int长度)      

<>强演示程序

  

源码如下(ObjectStreamTest.java):
  

     /* *   * ObjectInputStream和ObjectOutputStream测试程序   *   *注意:通过ObjectInputStream, ObjectOutputStream操作的对象,必须是实现了序列化或外部化序列化接口的类的实例。   *   *   */进口java.io.FileInputStream;   进口java.io.FileOutputStream;   进口java.io.ObjectInputStream;   进口java.io.ObjectOutputStream;   进口java.io.Serializable;   进口java.util.Map;   进口java.util.HashMap;   进口java.util.Iterator;   公开课ObjectStreamTest {   私有静态最终字符串TMP_FILE=癰ox.tmp”;   公共静态void main (String [] args) {   testWrite ();   testRead ();   }/* *   * ObjectOutputStream测试函数   */私有静态孔隙testWrite () {   尝试{   ObjectOutputStream=new ObjectOutputStream (   新FileOutputStream (TMP_FILE));   out.writeBoolean(真正的);   out.writeByte((65字节));   out.writeChar (' a ');   out.writeInt (20131015);   out.writeFloat(3.14度);   out.writeDouble (1.414 d);//写入HashMap对象   HashMap地图=new HashMap ();   地图。把(“一”、“红色”);   地图。把(“两个”,“绿色”);   地图。把(“三”,“蓝色”);   out.writeObject(地图);//写入自定义的盒子对象,盒子实现了可序列化的接口   盒盒=new盒(“桌子”,80年,48);   out.writeObject(盒);   out.close ();   }捕捉(例外的前女友){   ex.printStackTrace ();   }   }/* *   * ObjectInputStream测试函数   */私有静态孔隙testRead () {   尝试{   ObjectInputStream=new ObjectInputStream (   新FileInputStream (TMP_FILE));   system . out。printf(“布尔:% b \ n”, in.readBoolean ());   system . out。printf("字节:% d \ n ", (in.readByte()和0 xff));   system . out。printf (" char: % c \ n ", in.readChar ());   system . out。printf (" int: % d \ n ", in.readInt ());   system . out。printf(“浮动:% f \ n”, in.readFloat ());   system . out。printf(“双:% f \ n”, in.readDouble ());//读取HashMap对象   HashMap地图=(HashMap) in.readObject ();   迭代器iter=map.entrySet () .iterator ();   而(iter.hasNext ()) {   地图。输入条目=(map . Entry) iter.next ();   system . out。printf (" % 6 s——% s \ n”, entry.getKey (), entry.getValue ());   }//读取箱对象,盒子实现了可序列化的接口   盒盒=(箱)in.readObject ();   system . out。println(“盒子:“+箱);   in.close ();   }捕捉(异常e) {   e.printStackTrace ();   }   }   }   类框实现Serializable {   私人int宽度;   私人int高度;   私人字符串名称;   公共框(字符串名称,int宽度,int高度){   this.name=名称;   这一点。宽度=宽度;   这一点。身高=身高;   }   @Override   公共字符串toString () {   回报”(“+名字+”:(“+宽度+”、“+ +”高度)]”;   }   }

ObjectInputStream和ObjectOutputStream介绍_动力节点Java学院整理