(对象流)ObjectInputStreamAndOut

    xiaoxiao2021-03-25  107

    /** * 序列化:就是将对象的状态储存到特定储存介质中的过程,也就是将对象的状态转换为可保持或传输格式的过程 * 反序列化:则是从特定储存介质中将数据重新构建对象的过程 * 注意:1.要求此类是可序列化的,必须实现Serializable接口 * 2.要求此类中的属性也必须实现Serializable接口 * 3.应该为此类提供一个版本号 也就是(private static final long serialVersionUID) * 4.使用static或transient修饰的属性,不可以实现序列化 * 5.如果此类没有重写toString方法,则直接打印类的对象的时候,打印的是一个内存地址; */ public static void xuliehua(){ //提供序列化的流 ObjectOutputStream oos = null; try { oos = new ObjectOutputStream(new FileOutputStream(new File("person.txt"))); //将两个person对象序列化 Person p1 = new Person("刘德华", 45); Person p2 = new Person("范冰冰", 35); //序列化 oos.writeObject(p1); oos.writeObject(p2); }  catch (IOException e) { e.printStackTrace(); }finally { if(oos != null){ try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } }

    }

    /** * 反序列化 */ public static void fanXuLieHua(){ //提供反序列化的流  也就是ObjectInputStream ObjectInputStream ois = null; try { ois = new ObjectInputStream(new FileInputStream(new File("person.txt"))); //序列化操作 Person p1 = (Person)ois.readObject(); //5.如果此类没有重写toString方法,则直接打印类的对象的时候,打印的是一个内存地址; System.out.println(p1); Person p2 = (Person)ois.readObject(); //5.如果此类没有重写toString方法,则直接打印类的对象的时候,打印的是一个内存地址; System.out.println(p2); }  catch (Exception e) { e.printStackTrace(); }finally { if(ois != null){ try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } } }

    转载请注明原文地址: https://ju.6miu.com/read-25032.html

    最新回复(0)