对象操作流ObjectInputStream

本文演示了如何使用Java的ObjectInputStream进行对象的反序列化,从文件中读取并还原Person对象,展示了基本的读取流程及异常处理。

对象操作流ObjectInputStream

  • 读取:new ObjectInputStream(InputStream),readObject()

      public static void main(String[] args) throws IOException, ClassNotFoundException {
      	ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));
      	Person p1 = (Person) ois.readObject();
      	Person p2 = (Person) ois.readObject();
      	System.out.println(p1);
      	System.out.println(p2);
      	ois.close();
      }
    
package com.heima.otherio;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

import com.heima.bean.Person;

public class Demo05_ObjectInputStream {

	/**
	 * @param args
	 * @throws IOException
	 * @throws ClassNotFoundException
	 * ObjectInputStream
	 * 对象输入流是反序列化
	 * 反序列化:将对象读出到内存中
	 */
	public static void main(String[] args) throws IOException,
			ClassNotFoundException {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));
		Person p1 = (Person) ois.readObject();
		Person p2 = (Person) ois.readObject();
		//当文件读取到了末尾时出现EOFException(end of file)
		//Person p3 = (Person) ois.readObject(); 
		System.out.println(p1);
		System.out.println(p2);
		ois.close();
	}
}
使用ObjectInputStream读取对象操作如下: 1. 创建一个FileInputStream用于读取文件,然后创建一个ObjectInputStream来读取对象: ```java try (FileInputStream fileInputStream = new FileInputStream("filename.txt"); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream)) { // 读取对象操作 Object obj = objectInputStream.readObject(); // 对读取到的对象进行处理 } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } ``` 2. 使用try-with-resources语句来自动关闭:确保在读取完对象后,及时关闭ObjectInputStream和相关的,可以使用try-with-resources语句来自动关闭,以避免资源泄漏。 ```java try (ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream("filename.txt"))) { // 读取对象操作 Object obj = objectInputStream.readObject(); // 对读取到的对象进行处理 } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } ``` 在上述代码中,我们使用了try-with-resources语句来自动关闭。在try块中,先创建一个ObjectInputStream对象,它接受一个FileInputStream作为参数,用于读取文件。然后,使用objectInputStream的readObject()方法读取对象,并将其存储在一个Object类型的变量中。根据实际情况,您可以根据预期的对象类型进行类型转换,并对读取到的对象进行相应的处理。 需要注意的是,在使用ObjectInputStream读取对象时,要确保读取的文件是通过ObjectOutputStream写入的,并且对象的类定义是一致的,否则可能会导致读取失败或出现异常。 总之,以上是使用ObjectInputStream读取对象操作步骤。根据您的实际需求,可以在读取到对象后进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

左绍骏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值