JavaIO流-对象流
Posted orzjiangxiaoyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaIO流-对象流相关的知识,希望对你有一定的参考价值。
import org.junit.Test; import java.io.*; /** * 对象流 * 序列化 * 反序列化 * * * 要求对象所属的类必须是可序列化的 * 对象的序列化机制 * 作用:用于存储和读取基本数据类型数据或对象的处理 * * @author orz */ public class ObjectInputOutput { /**ObjectInputStream序列化 * 序列化过程:将内存中的java对象保存到磁盘中或通过网络传输出去 */ @Test public void test1()throws IOException { ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("object.dat")); oos.writeObject(new String("我爱北京天安门")); oos.flush(); oos.writeObject(new Person("王明",23)); oos.flush(); oos.close(); } /** * //ObjectOutputStream反序列化 * 反序列化 */ @Test public void test2() { ObjectInputStream ois=null; try { ois=new ObjectInputStream(new FileInputStream("object.dat")); Object obj=ois.readObject(); String str=(String)obj; System.out.println(str); Person p=(Person) ois.readObject(); System.out.println(p); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (ois != null) { ois.close(); } } catch (IOException e) { e.printStackTrace(); } } } } //NotSerializableException //要想一个java对象是可序列化的需要满足如下;要求 //1.该类必须实现接口Serializable //2.提供一个全局常量:serialVersionUID //3.除了当前,类需要实现Serializable接口之外,还必须保证其内部所有属性也必须是可序列化的(默认情况下,基本数据类型可序列化) //补充:ObjectInputStream、ObjectOutputStream不能序列化static ransient修饰的成员 //标识接口 class Person implements Serializable { public static final long serialVersionUID=4567894567L; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name=‘" + name + ‘‘‘ + ", age=" + age + ‘}‘; } 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; } }
以上是关于JavaIO流-对象流的主要内容,如果未能解决你的问题,请参考以下文章
javaIO中的对象流ObjectInputStream与ObjectOutputStream