Java从入门到删库跑路——文件IO操作学习(4)

一.IO包中的类层次关系图

1.字节输入流(InputStream)

2.字节输出流(OutputStream) 

3.字符输入流(Reader) 

4.字符输出流(Writer) 

 

 

 二.对象序列化(保存对象)

所谓的对象序列化(在某些书中也叫串行化),是指将对象转换成二进制数据流的一种实现手段。通过将对象序列化,可以方便地实现对象的传输及保存。

在Java中提供有ObjectlnputStream与ObjectOutputStream这两个类用于序列化对象的操作。这两个类是用于存储和读取对象的输入输出流类,只要把对象中的所有成员变量都存储起来,就等于保存了这个对象,之后从保存的对象之中再将对象读取进来就可以继续使用此对象。

ObjectInputStream 类与ObjectOutputStream 类,用于帮助开发者完成保存和读取对象成员变量取值的过程,但要求读写或存储的对象必须实现了Serializable接口,但Serializable接口中没有定义任何方法,仅仅被用做一种标记, 以被编译器作特殊处理。

可序列化的对象

package dataStructure;

import java.io.Serializable;

public class Person implements Serializable{

	private String name;
	private int age;
	public Person(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public String toString() {
		return "名: "+this.name+", 年龄: "+this.age;
	}
}

 使用ObjectOutputStream与ObjectInputStream 将Person类的对象保存在文件之中

package dataStructure;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
/*类Person实现了Serializable 接口,所以此类的对象可序列化。*/
/*使用ObjectOutputStream与ObjectInputStream 将Person类的对象保存在文件之中。*/
public class SerializableDemo {
	public static void main(String[] args) throws Exception{
		File f =new File("SerializedPerson");
		serialize(f);
		deserialize(f);
	}
	
	public static void serialize(File f) throws Exception {
		OutputStream outputFile = new FileOutputStream(f);
		ObjectOutputStream cout =new ObjectOutputStream(outputFile);
		cout.writeObject(new Person("jojo", 18));
		cout.close();
	}
	
	private static void deserialize(File f)  throws Exception{
		InputStream inputFile = new FileInputStream(f);
		ObjectInputStream cin = new ObjectInputStream(inputFile);
		Person p = (Person)cin.readObject();
		System.out.println(p);
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值