java中ObjectOutputStream和ObjectInputStream的使用
来源:互联网 发布:淘宝贝亲奶瓶正品 编辑:程序博客网 时间:2024/05/16 08:21
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;/** * 序列化对象。 * 把对象持久化到存储设备上 * ObjectOutputStream 将java对象的基本数据类型和图形写入OutputStream。 * ObjectOutputStream 这个类专门把创建的对象持久化到网络或者持久化设备上。 * 当我们要把一个对象持久化到外围设备上,或者网络上的时候,这个对象所属的类必须实现java.io.Serializable接口。 * * 在对象的序列化中,可能因为以下问题发生异常: * 1.当我们去读取已经被序列化的对象时,如果当初在这个对象序列化的时候是通过无参数的构造方法创建的对象,而后来对这个类进行修改,导致这个类没有无参数的构造方法时,就发发生异常。 * * 2.该类包含未知数据类型。 * * 3.因为序列化时,使用一个称为serialVersionUID的版本号,与每个可序列化的类相关联。在序列化,反序列化过程中会验证这个版本号是否相同。 * 每个类的serialVersionUID是唯一的。注意:在开发的时候,当一个对象需要被序列化的时候,这个对象所属的类一定要实现Serializable接口,并且最好自己指定这个版本号的值。 * * 类中的静态变量不会被序列化。!! * * 注意:当我们在序列化对象,如果对象中的某些变量不需要序列化,那么只需要将这个对象的变量用transient修饰这个变量。这个在序列化的同时,它就不会被序列化,我们称这个关键字为瞬态关键字。 * * @author print * */public class Demo1 { public static void main(String[] args) { wirteObj(); readObj(); } public static void readObj() { try { InputStream in = new FileInputStream("d:\\p.info"); ObjectInputStream ois = new ObjectInputStream(in); Object readObject = ois.readObject(); System.out.println(readObject); ois.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void wirteObj() { try { OutputStream os = new FileOutputStream("d:\\p.info"); ObjectOutputStream oos = new ObjectOutputStream(os); //创建需要被持久化的对象 Person p = new Person("zy", "22","nv"); //把对象持久化到硬盘上 oos.writeObject(p); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }Person类:import java.io.Serializable;public class Person implements Serializable{ private String name; private String age; private transient String sex; public Person() { super(); } public Person(String name, String age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String toString() { return "Person [name=" + name + ", age=" + age +",sex=" +sex+"]"; } }
0 0
- java中ObjectOutputStream和ObjectInputStream的使用
- Java中ObjectOutputStream和ObjectInputStream的基本使用详解
- Java中ObjectInputStream 与 ObjectOutputStream的使用
- ObjectOutputStream 和 ObjectInputStream的使用
- Java Socket编程中使用ObjectOutputStream 和 ObjectInputStream 出现问题
- IO流中ObjectOutputStream和ObjectInputStream的使用
- Java 流中关于ObjectInputStream 和ObjectOutputStream 的陷进
- Java ObjectInputStream 和 ObjectOutputStream
- java中使用ObjectOutputStream和ObjectInputStream时产生的“invalid stream header”错误解决方法
- ObjectOutputStream-ObjectInputStream的使用
- java中ObjectInputStream与ObjectOutputStream的认识
- java对象流ObjectInputStream、ObjectOutputStream的使用
- ObjectOutputStream和ObjectInputStream的简单使用
- java中的ObjectInputStream和ObjectOutputStream的讲解
- Java的IO流--ObjectInputStream和ObjectOutputStream
- Java IO ObjectInputStream和ObjectOutputStream
- Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法
- java中在socket上重新建立ObjectInputStream和ObjectOutputStream的问题
- 剑指offer:顺时针打印矩阵
- 字符串排序
- Android学习之界面篇(四)自定义Animation
- Spring MVC 知识点集合
- 计算机科学专业必读的44册经典著作
- java中ObjectOutputStream和ObjectInputStream的使用
- Android图片加载框架Picasso最全使用教程 五
- SpringMVC学习记录(一)--环境配置
- Marshmallow and User Data
- AndroidEventBus源码分析
- 分页+新建+跳转+最后页
- Spring mvc 配置详解
- poj 1743 Musical Theme 【后缀数组 最长不重叠重复子串】
- HYSBZ 3196Tyvj 1730 二逼平衡树(树套树)