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学院整理