栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java序列化与反序列化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java序列化与反序列化

什么是序列化和反序列化

序列化:指将内存中的某个对象压缩成字节流的形式
反序列化:指将字节流转化成内存中的对象

重要的类
  • FileOutputStream:是用于将数据写入File或FileDescriptor的输出流
  • FileInputStream:指对文件数据以字节的形式进行读取操作如读取图片视频等
  • ObjectOutputStream:对象转成字节数据的输出到文件中保存,对象的输出过程称为序列化,可实现对象的持久存储。
  • ObjectInputStream :将之前使用 ObjectOutputStream 序列化的原始数据恢复为对象,以流的方式读取对象。

实现序列化的必要要求
只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。(不是则会抛出异常)

实现方法

若类仅仅实现了Serializable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out)。

  • ObjectOutputStream调用类对象的writeObject(ObjectOutputStream
    out)的方法进行序列化。
  • ObjectInputStream会调用类对象的readObject(ObjectInputStream
    in)的方法进行反序列化。

若类仅仅实现了Externalnalizable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out)。

  • ObjectOutputStream调用类对象的writeExternal(ObjectOutput
    out))的方法进行序列化。
  • ObjectInputStream会调用类对象的readExternal(ObjectInput in)的方法进行反序列化。
如何序列化类
	public static void main(String[] args) throw IOException {
            Person p = new Person();
			ObjectOutputStream ois = new ObjectOutputStream(new FileOutputStream("Person.txt"));
		    ois.wirteObject(p); //序列化
	        ois.close();
		}
		//如果我们为类的属性中添加关键字transient,则属性不会被序列化

序列化针对的是对象,而不是类。

如何反序列化
	public static void main(String[] args) throw IOException {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.txt"));
		    Person p= Person ois.readObject(); //反序列化
	        ois.close();
		}
		
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号