52.IO流-对象的序列化
来源:互联网 发布:2017年十大网络用语 编辑:程序博客网 时间:2024/06/05 03:58
------- android培训、java培训、期待与您交流! ----------
一、概念
- 将堆中的对象保存到介质(如硬盘)中叫对象持久化或序列化。静态区的不行。
- 操作对象:
- ObjectInputStream
- ObjectOutputStream
- 被操作的对象需要实现Serializable(标记接口:没方法的接口)。
二、对象
- ObjectOutStream
- ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。
- ObjectInputStream
- ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
三、代码
/*对象的序列化:ObjectOutputStream把源(如内存)中的对象序列化到目的(如硬盘)上,ObjectInputStream把源(如硬盘)中的序列化对象读取到目的(如内存)中。ObjectOutputStream序列化时,会给这个对象加一个序列化UID,当ObjectInputStream 方法readObject();会匹配这个类的UID和序列化UID,transient 关键字可以保证成员不被序列化。*/import java.io.*;class ObjectStreamDemo{public static void main(String[] args) throws Exception{//writeObj();readObj();}public static void readObj() throws Exception{ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));Person p = (Person) ois .readObject();System.out.println(p);ois.close();}public static void writeObj() throws Exception{ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt"));oos.writeObject(new Person("lisi0",399));oos.close();}}
- 注意16行,
- 一是会报类型不匹配异常,因为文件中的序列号对象不一定是定义的对象。
- 二是person对象成员代码改变的时候,编译时本地类会与流中的类进行比较,序列化号会不同导致InvalibClassException编译不通过。因为序列号是根据成员获取出的。
- 怎么解决改成员改变还可以使用,可以自己定义UID,
- 注意:静态是不能被序列化的。
- 注意:transient修饰的成员不能被序列号。
- 如果ObjectOutStream Write了多个 对象,那么 ObjectInputStream的read会依次读出。
- 52.IO流-对象的序列化
- IO流对象的序列化
- IO流(对象的序列化)
- IO流--对象的序列化
- Java的IO流与对象的序列化浅谈
- JAVA IO流(对象的序列化)
- IO流——对象的序列化
- IO流--文件切割合并&对象的序列化
- IO流-转换流、对象序列化
- IO流-对象序列化操作流
- Java IO流(对象序列化)
- python的io 与java的io流的使用及对象的序列化
- Java IO流与对象IO序列化
- Java IO流与对象IO序列化
- Java IO流与对象IO序列化(转)
- 24-IO流-55-IO流(ObjectOutputStream-对象的序列化)
- io之对象序列化
- 黑马程序员-----IO之对象流和对象序列化
- 通过并发程序名称,反查所在Menu
- 初学Android,使用Service的音乐播放器(七十二)
- wordpress主循环显示文章方法
- JavaScript monitor hidden input value change
- using System;
- 52.IO流-对象的序列化
- Sqlit3 简单操作
- Eclipse/RAD平台中一些名词术语缩写的介绍
- 一个判断字符串是否是数字的正则表达式
- 梦断代码--一个程序员的自白 笔记
- C++的虚函数理解
- 根据功能名称, 追溯所属菜单和职责
- emule中节点加入Kad网络过程(源代码详解)【对原文部分改进】
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)