系列化流和反序列化流

系列化流和反序列化流:

什么叫序列化和反序序列化??

在这里插入图片描述

ObjectOutputStream序列化流

ObjectOutputStream继承了OutputStream
ObjectOutputStream:对象序列化流
作用: 把对象以流的方式写入到文件中保存
        构造方法:
                ObjectOutputStream(OutputStream out)
        参数: OutputStream 字节输出流 指定输出到什么地方
使用步骤:
    (1)在要传入的对象的类上实现Serializable接口
(没有实现该接口,会报出java.io.NotSerializableException异常)
    (2)创建ObjectOutputStream对象,构造方法中传入字节输出流
    (3)使用对象中的writeObject把对象写入到相应的文件中
    (4)释放资源

ObjectInputStream反序列化流

 	ObjectInputStream继承了InputStream
  	ObjectInputStream:对象的反序列化流
  	作用:把文件中保存的对象以流的方式读取出来
  	构造方法:
  		ObjectInputStream(InputStream in)
  		参数:InputStream 字节输入流
  	特有的成员方法
  		readObject()  读取对象,返回离开一个Object对象
  	使用步骤:
  		1、创建ObjectInputStream对象,传入一个字节输入流
  		2、使用对象的readOnject()方法
  		3、释放资源
  		4、使用得到的对象
import java.io.Serializable;
/*	该类的对象进行序列化
 * 	对该类的对象进行序列化的时候,如果没有实现Serializable接口,会报出异常
 * 
 * 	Serializable接口作用:
 * 			实现该接口以启用其序列化的功能(没有实现该接口的类对象,无法使其序列化、反序列化)
 * 			Serializable接口也叫标记性接口,进行序列化的时候就回检测这个类上是否有这个标记
 * 					有:可以进行序列化和反序列化
 * 					没有:会抛出java.io.NotSerializableException异常
 * 			要进行序列化的接口必须实现Serializable接口
 */
public class user implements Serializable{
		private String name;
		private String age;
		
		
		public user() {
			super();
		}
		
		public user(String name, String age) {
			super();
			this.name = name;
			this.age = age;
		}
		
		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;
		}

		@Override
		public String toString() {
			return "user [name=" + name + ", age=" + age + "]";
		}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
/*
 * ObjectOutputStream继承了OutputStream
 * ObjectOutputStream:对象序列化流
   *    作用: 把对象以流的方式写入到文件中保存
 *    
   *    构造方法:
 *    ObjectOutputStream(OutputStream out) 
 *    参数: OutputStream  字节输出流    指定输出到什么地方
 *    
 *    
 *    使用步骤:
 *    	在要传入的对象的类上实现Serializable接口
 *    	(没有实现该接口,会报出java.io.NotSerializableException异常)
 *    	创建ObjectOutputStream对象,构造方法中传入字节输出流
 *    	使用对象中的writeObject把对象写入到相应的文件中
 *    	释放资源
 * 
 */
public class ObjectOutputStreamText1 {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		//1、创建一个ObjectOutputStream对象
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ObjectOutputStreamText1.txt"));
		//2、使用writeOnject()方法往文件中写入一个对象
		oos.writeObject(new user("张三","20"));
		//3、释放资源
		oos.close();

	}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
/*
 * 	ObjectInputStream继承了InputStream
 * 	ObjectInputStream:对象的反序列化流
 * 	作用:把文件中保存的对象以流的方式读取出来
 * 
 * 	构造方法:
 * 		ObjectInputStream(InputStream in)
 * 		参数:InputStream 字节输入流
 * 	特有的成员方法
 * 		readObject()  读取对象,返回离开一个Object对象
 * 
 * 	使用步骤:
 * 		1、创建ObjectInputStream对象,传入一个字节输入流
 * 		2、使用对象的readOnject()方法
 * 		3、释放资源
 * 		4、使用得到的对象
 */
public class ObjectInputStreamText1 {
	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
		//1、创建ObjectInputStream,构造方法中传入字节输入流
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\eclipseSE源码\\java初学\\ObjectOutputStreamText1.txt"));
		//2、调用对象的readObject()方法
		Object obj = ois.readObject();
		//3、释放资源
		ois.close();
		//4、调用读取的对象
		System.out.println(((user)obj).toString());
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇男孩~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值