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.IO输入输出流 过滤流 buffer流和data流

    浅析Java.IO输入输出流 过滤流 buffer流和data流

    这篇文章主要介绍了Java.IO输入输出流 过滤流 buffer流和data流的相关资料,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • java分布式面试CAP分别代表含义分析

    java分布式面试CAP分别代表含义分析

    这篇文章主要为大家介绍了java分布式面试中关于CAP分别代表含义的问题分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 如何利用Map与函数式接口来实现去除if else

    如何利用Map与函数式接口来实现去除if else

    这篇文章主要介绍了如何利用Map与函数式接口来实现去除if else问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java开源项目jeecgboot的超详细解析

    java开源项目jeecgboot的超详细解析

    JeecgBoot是一款基于BPM的低代码平台,下面这篇文章主要给大家介绍了关于java开源项目jeecgboot的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Java线程间协作wait、notify和notifyAll详解

    Java线程间协作wait、notify和notifyAll详解

    这篇文章主要介绍了Java线程间协作wait、notify和notifyAll详解,在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信,尽管关于wait和notify的概念很基础,它们也都是Object类的函数,但用它们来写代码却并不简单,,需要的朋友可以参考下
    2023-10-10
  • 多模块项目使用枚举配置spring-cache缓存方案详解

    多模块项目使用枚举配置spring-cache缓存方案详解

    这篇文章主要为大家介绍了多模块项目使用枚举配置spring-cache缓存的方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java中File类中常用方法详解

    Java中File类中常用方法详解

    这篇文章主要为大家详细介绍了File类中常用方法的程序演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 基于Beanutils.copyProperties()的用法及重写提高效率

    基于Beanutils.copyProperties()的用法及重写提高效率

    这篇文章主要介绍了Beanutils.copyProperties( )的用法及重写提高效率的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java编程题之顺时针打印矩阵

    java编程题之顺时针打印矩阵

    这篇文章主要为大家详细介绍了java编程题之顺时针打印矩阵,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Java web过滤器验证登录防止未登录进入界面

    Java web过滤器验证登录防止未登录进入界面

    这篇文章主要介绍了Java web过滤器验证登录防止未登录进入界面,在一些系统中经常可以用到此功能,对java web 验证登录知识感兴趣的朋友一起看下吧
    2016-08-08

最新评论