每日一课 | 从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/

推荐阅读--

每日一课 | Java 中如何将 ArrayList 与 HashSet 互相转换?

每日一课 | JavaScript基础

每日一课 | JavaScript的事件

每日一课 | JavaScript的内置对象

球分享

球点赞

球在看

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值