JAVA IO六(对象流)

本文详细介绍了Java中对象流的使用,包括ObjectOutputStream和ObjectInputStream的实例代码,以及序列化的基本概念和实现方式。

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

JAVA IO—对象流

一.ObjectOutputStream

ObjectOutputStream可以将Java对象写入OutputStream。

	public static void main(String[] args) throws Exception {
		ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("d:/student.data"));

		Student stu = new Student();
		stu.name = "test";
		stu.age = 12;

		objectOutputStream.writeObject(stu);
		objectOutputStream.close();		
	}

	public static class Student implements Serializable {
		public int age;
		public String name;
	}

二.ObjectInputStream

ObjectInputStream性质与ObjectOutputStream一样,只不过它是从InputStream中读取对象。

	public static void main(String[] args) throws Exception {		
		ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("d:/student.data"));

		Student stuRead = (Student) objectInputStream.readObject();

		objectInputStream.close();

		System.out.println(stuRead.name);
		System.out.println(stuRead.age);
	}

	public static class Student implements Serializable {
		public int age;
		public String name;
	}

三.序列化

如果要使用ObjectInputStream或ObjectOutputStream,就必定会涉及序列化。对一个类进行序列化或反序列化时,这个类就必须实现Serializable接口。序列化类中的serialVersionUID用于确定反序列化对象是否使用相同版本的类进行序列化。

### Java IO 对象流的使用方法 在Java中,`ObjectInputStream` 和 `ObjectOutputStream` 类用于序列化和反序列化对象。这允许程序将对象保存到文件或将对象从文件加载回内存。 #### 序列化对象至文件 为了实现这一功能,首先需要创建一个实现了 `Serializable` 接口的对象实例。接着可以利用 `FileOutputStream` 来指定目标文件路径,并通过 `ObjectOutputStream` 将对象写入该文件[^1]。 ```java import java.io.*; public class SerializeExample { public static void main(String[] args) throws IOException { User user = new User("John", "Doe"); try (FileOutputStream fos = new FileOutputStream("user.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(user); } } private static class User implements Serializable { private String firstName; private String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } } } ``` #### 反序列化对象自文件 当要恢复之前存储的对象状态时,则需采用相反的过程——即先打开相同的文件作为输入源(`FileInputStream`),再借助于 `ObjectInputStream` 完成读取操作并重建原始对象结构。 ```java import java.io.*; public class DeserializeExample { public static void main(String[] args) throws IOException, ClassNotFoundException { User loadedUser; try (FileInputStream fis = new FileInputStream("user.ser"); ObjectInputStream ois = new ObjectInputStream(fis)) { loadedUser = (User) ois.readObject(); System.out.println(loadedUser.getFirstName() + " " + loadedUser.getLastName()); } } private static class User implements Serializable { private String firstName; private String lastName; @Override public String getFirstName() { return firstName; } @Override public String getLastName() { return lastName; } } } ``` 上述代码展示了如何使用Java中的对象流来处理数据持久化的具体例子。需要注意的是,在实际应用开发过程中应当考虑安全性问题以及版本兼容性等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值