Java 对象流详解

本文深入讲解Java对象流的使用,包括对象序列化和反序列化的具体实现,通过实例演示了如何利用ObjectOutputStream和ObjectInputStream进行对象的存储和读取。强调了实现Serializable接口的重要性以及版本号的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 对象流详解



import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Work2 implements Serializable {
	private static final long serialVersionUID = 1L;
	String name;
	int age;
	public Work2(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String toString() {
		return "Work2 [name=" + name + ", age=" + age + "]";
	}
}

class Ois{
	public static void main(String[] args) {
		try(
			FileInputStream fis = new FileInputStream("文件名或文件");
			ObjectInputStream ois = new ObjectInputStream(fis)
			) {
			//Object ob = ois.readObject();
			Work2 work = (Work2)ois.readObject();
			System.out.println(work);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

class Oos{
	public static void main(String[] args) {
		Work2 work = new Work2("小明", 12);
		try(
			FileOutputStream fos = new FileOutputStream("文件名或文件");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
				) {
			oos.writeObject(work);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

对象流重点:
需要存储的对象必须实现可序列化接口Serializable,否则会抛出异常NotSerializabileException;
需要加版本号:private static final long serialVersionUID = 1L;
对象输出流经过oos.writeObject(),首先将对象按照其结构转换为一组字节,这个过程为对象序列化;
对象输入流ois.readObject(),和上面是反过来的,把字节转换为对象。
对象输入流和输出流,其实所有的对象默认都是超类Object,然后可以强制转换为所需要的对象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值