IO流(对象的序列化和反序列化)
2016-01-06 05:09
543 查看
ObjectOutputStream-对象的序列化
IO流(ObjectInputStream-对象的反序列化)
其他提醒
public class Io55_1 { public static void main(String[] args) throws IOException { writeObj(); } public static void writeObj() throws IOException, IOException { ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("obj.object")); //对象序列化。被序列化的对象必须实现Serializable接口 oos.writeObject(new Person("小强",30)); oos.close(); } } public class Person implements Serializable/*标记接口*/{ private String name; private int age; public Person(String name, int age) { super(); this.name = name; this.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; } }
IO流(ObjectInputStream-对象的反序列化)
public class Io56_1 { public static void main(String[] args) throws IOException, ClassNotFoundException { readObj(); } //反序列化(就是读取Object对象) private static void readObj() throws IOException, ClassNotFoundException { ObjectInputStream ois=new ObjectInputStream(new FileInputStream("obj.object")); Person p=(Person) ois.readObject(); System.out.println(p.getName()+":"+p.getAge()); ois.close(); } public static void writeObj() throws IOException, IOException { ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("obj.object")); //对象序列化。被序列化的对象必须实现Serializable接口 oos.writeObject(new Person("小强",30)); oos.close(); } }
其他提醒
/* * 实现Serializable接口用于给被序列化的类加入ID号 * 用于判断类和对象是不是同一个版本 * */ public class Person implements Serializable/*标记接口*/{ /*IO57 * private static final long serialVersionUID = 9527L;如果不写。每一次编译的时候。可能会因为编译器的 * 不同,或者修改的Person类的内容。就会可能导致Serializable产生的serialVersionUID不一致。就会导致 * 不能够反序列化(读取文件中的内容)不能完成。 * * 如果定义了该serialVersionUID = 9527L(值随便写);就不会让虚拟机自己计算产生serialVersionUID。故就可以 * 保证serialVersionUID的一致。就能够保证可以正常的反序列化 */ private static final long serialVersionUID = 9527L; /*IO58 * transient:非静态数据不想被序列化可以使用这个关键字 * * static修饰的数据。不会被序列化。(结果age=0,是因为在方法区里面会有一个默认值就是0) * **/ private transient String name; private static int age; public Person(String name, int age) { super(); this.name = name; this.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; } }
相关文章推荐
- java IO流文件的读写具体实例
- 装饰类设计模式 【不完善版】 IO流
- IO流操作规律 转码
- 重置标准输入输出流 IO流
- 【Java基础】IO流操作
- 【代码练习】学生成绩排名--涉及IO流和集合
- JAVA基础-IO流
- IO(输入输出流) 4000
- Java培训-IO流补充
- IO流操作规律(一)
- 黑马程序员————————IO流 FileWriter类 和 FileReader类的一些基本用法
- 黑马程序员--Java基础--IO流
- io 学习
- javaIO继承关系
- io流(一)
- 黑马程序员—装箱拆箱与IO流重点
- 黑马程序员——java基础——IO流(2)File类,IO常用流对象及IO包中其他类
- 黑马程序员_java中IO流的操作规律
- 黑马程序员-java基础-IO流中的字节流和字符流
- 参加某培训机构Java培训记录(七)