如何从Java中的文件读取对象

在前面的示例中,您将学习如何将对象写入文件 。 在此示例中,您将学习如何从保存的文件中读取对象或如何反序列化序列化的文件。

反序列化的过程与序列化非常相似,您需要使用ObjectInputStream读取文件的内容并将其转换回Java对象。

FileInputStream fin = new FileInputStream("c:\\temp\\address.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
address = (Address) ois.readObject();

1.从文件读取对象

此类将读取序列化文件c:\\temp\\address.ser (在本示例中创建),然后将其转换回“ Address”对象并打印出保存的值。

ReadObject.java
package com.mkyong.io;

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

public class ReadObject {

	public static void main(String args[]) {

		ReadObject obj = new ReadObject();

		Address address = obj.deserialzeAddress("c:\\temp\\address.ser");

		System.out.println(address);

	}

	public Address deserialzeAddress(String filename) {

		Address address = null;

		FileInputStream fin = null;
		ObjectInputStream ois = null;

		try {

			fin = new FileInputStream(filename);
			ois = new ObjectInputStream(fin);
			address = (Address) ois.readObject();

		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {

			if (fin != null) {
				try {
					fin.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			if (ois != null) {
				try {
					ois.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}

		return address;

	}

	public Address deserialzeAddressJDK7(String filename) {

		Address address = null;

		try (ObjectInputStream ois 
			= new ObjectInputStream(new FileInputStream(filename))) {

			address = (Address) ois.readObject();

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

		return address;

	}

}

输出量

Street : wall street Country : united state

参考文献

  1. ObjectOutputStream JavaDoc
  2. Java对象序列化
  3. JDK 7中的try-with-resources示例

翻译自: https://mkyong.com/java/how-to-read-an-object-from-file-in-java/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值