本文共 2967 字,大约阅读时间需要 9 分钟。
ObjectInputStream 和 ObjectOutputStream
将内存中的java对象保存到磁盘中或通过网络传输出去
使用ObjectOutputStream实现 代码实现:@Testpublic void testObjectOutputStream() { ObjectOutputStream oos = null; try { oos = new ObjectOutputStream(new FileOutputStream("object.dat")); oos.writeObject(new String("EXO大发!")); oos.flush();//刷新操作 oos.writeObject(new Person("朴灿烈",29)); oos.flush(); oos.writeObject(new Person("张艺兴",30,new Account(200000))); oos.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if(oos != null){ try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } }}
将磁盘文件中的对象还原为内存中的一个java对象
使用ObjectInputStream来实现 代码实现:@Testpublic void testObjectInputStream(){ ObjectInputStream ois = null; try { ois = new ObjectInputStream(new FileInputStream("object.dat")); Object obj = ois.readObject(); String str = (String)obj; Person p1 = (Person)ois.readObject(); Person p2 = (Person)ois.readObject(); System.out.println(str); System.out.println(p1); System.out.println(p2); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { if(ois != null){ try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } }}
Person需要满足如下的要求,方可序列化
public class Person implements Serializable { private static final long serialVersionUID = 66667703L; private String name; private transient int age;//加了transient不会被序列化 private Account account; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public Person(String name, int age, Account account) { this.name = name; this.age = age; this.account = account; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", account=" + account + '}'; }}
转载地址:http://tvuki.baihongyu.com/