Java将对象保存到文件中/从文件中读取对象的方法

 更新时间:2016年12月01日 10:29:16   投稿:jingxian  
下面小编就为大家带来一篇Java将对象保存到文件中/从文件中读取对象的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1.保存对象到文件中

Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可:

public static void writeObjectToFile(Object obj)
  {
    File file =new File("test.dat");
    FileOutputStream out;
    try {
      out = new FileOutputStream(file);
      ObjectOutputStream objOut=new ObjectOutputStream(out);
      objOut.writeObject(obj);
      objOut.flush();
      objOut.close();
      System.out.println("write object success!");
    } catch (IOException e) {
      System.out.println("write object failed");
      e.printStackTrace();
    }
  }

参数obj一定要实现Serializable接口,否则会抛出java.io.NotSerializableException异常。另外,如果写入的对象是一个容器,例如List、Map,也要保证容器中的每个元素也都是实现 了Serializable接口。例如,如果按照如下方法声明一个Hashmap,并调用writeObjectToFile方法就会抛出异常。但是如果是Hashmap<String,String>就不会出问题,因为String类已经实现了Serializable接口。另外如果是自己创建的类,如果继承的基类没有实现Serializable,那么该类需要实现Serializable,否则也无法通过这种方法写入到文件中。

Object obj=new Object();
    //failed,the object in map does not implement Serializable interface
    HashMap<String, Object> objMap=new HashMap<String,Object>();
    objMap.put("test", obj);
    writeObjectToFile(objMap);

2.从文件中读取对象

可以利用如下方法从文件中读取对象

public static Object readObjectFromFile()
  {
    Object temp=null;
    File file =new File("test.dat");
    FileInputStream in;
    try {
      in = new FileInputStream(file);
      ObjectInputStream objIn=new ObjectInputStream(in);
      temp=objIn.readObject();
      objIn.close();
      System.out.println("read object success!");
    } catch (IOException e) {
      System.out.println("read object failed");
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    return temp;
  }

读取到对象后,再根据对象的实际类型进行转换即可。

以上这篇Java将对象保存到文件中/从文件中读取对象的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java ArrayList如何实现生成不重复随机数

    Java ArrayList如何实现生成不重复随机数

    这篇文章主要介绍了Java ArrayList如何实现生成不重复随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • java定时任务框架elasticjob详解

    java定时任务框架elasticjob详解

    这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。,需要的朋友可以参考下
    2019-06-06
  • Java之策略模式比较器案例讲解

    Java之策略模式比较器案例讲解

    这篇文章主要介绍了Java之策略模式比较器案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java类加载策略之双亲委派机制全面分析讲解

    Java类加载策略之双亲委派机制全面分析讲解

    这篇文章主要介绍了Java双亲委派机制,双亲委派模型是Java加载类的机制,采用双亲委派模型的好处是Java类随着它的类加载器一起具备了一种带有优先级的层级关系,通过这种层级关系可以避免类的重复加载,感兴趣的朋友可以参考下
    2023-12-12
  • mybatis中关于in的使用方法及说明

    mybatis中关于in的使用方法及说明

    这篇文章主要介绍了mybatis中关于in的使用方法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java中List常用操作比for循环更优雅的写法示例

    Java中List常用操作比for循环更优雅的写法示例

    List是Java中比较常用的集合类,关于List接口有很多实现类,下面这篇文章主要给大家介绍了关于Java中List常用操作比for循环更优雅的写法,需要的朋友可以参考下
    2021-11-11
  • Java调用高德地图API根据详细地址获取经纬度详细教程

    Java调用高德地图API根据详细地址获取经纬度详细教程

    写了一个经纬度相关的工具,分享给有需求的小伙伴们,下面这篇文章主要给大家介绍了关于Java调用高德地图API根据详细地址获取经纬度,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Java算法之位图的概念和实现详解

    Java算法之位图的概念和实现详解

    这篇文章主要介绍了Java算法之位图的概念和实现详解,位图可以利用每一位来对应一个值,比如可以利用int类型的数去存储0~31这个集合的数字,如果该集合内的数字存在,则把对应的位设置位1默认为0,需要的朋友可以参考下
    2023-10-10
  • Java 判断一个时间是否在另一个时间段内

    Java 判断一个时间是否在另一个时间段内

    这篇文章主要介绍了Java 判断一个时间是否在另一个时间段内的相关资料,需要的朋友可以参考下
    2016-10-10
  • java实现视频转码工具类

    java实现视频转码工具类

    这篇文章主要介绍了java实现视频转码,涉及到工具类用到的参数,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-01-01

最新评论