Java将对象写入文件读出_序列化与反序列化的实例

 更新时间:2017年08月17日 08:34:52   投稿:jingxian  
下面小编就为大家带来一篇Java将对象写入文件读出_序列化与反序列化的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的。

写入:

File aFile=new File("e:\\c.txt");
    Stu a=new Stu(1, "aa", "1");
    FileOutputStream fileOutputStream=null;
    try {
      fileOutputStream = new FileOutputStream(aFile);
      ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);
      objectOutputStream.writeObject(a);
      objectOutputStream.flush();
      objectOutputStream.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }finally {
      if(fileOutputStream!=null)
      {
        try {
          fileOutputStream.close();
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }      
      }
    }

读取:

FileInputStream fileInputStream=new FileInputStream(aFile);
ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);
Stu s=(Stu)objectInputStream.readObject();
System.out.println(s);

注意:

对于任何需要被序列化的对象,都必须要实现接口Serializable,它只是一个标识接口,本身没有任何成员,只是用来标识说明当前的实现类的对象可以被序列化。

如果在类中的一些属性,希望在对象序列化过程中不被序列化,使用关键字transient标注修饰就可以。当对象被序列化时,标注为transient的成员属性将会自动跳过。如果一个可序列化的对象包含某个不可序列化对象的引用,那么序列化操作会失败,会抛出NotSerializableException异常,那么将这个引用标记transient,就可以序列化了。

当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法,静态的成员变量。

如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存还原,而且会是递归的方式。

以上这篇Java将对象写入文件读出_序列化与反序列化的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot集成redis启动报错问题的解决方式

    springboot集成redis启动报错问题的解决方式

    这篇文章主要介绍了springboot集成redis启动报错问题的解决方式,从错误信息上看缺少pool2相关包,查询资料发现当redis客户端选择Lettuce时候需要增加:commons-pool2
    添加引用,重启服务,需要的朋友可以参考下
    2023-11-11
  • 关于maven install报错原因揭秘:parent.relativePath指向错误的本地POM文件

    关于maven install报错原因揭秘:parent.relativePath指向错误的本地POM文件

    在使用Maven进行项目构建时,如果遇到'parent.relativePath'指向错误的本地POM文件的问题,可能会导致构建失败,这通常是由于父项目POM文件的相对路径设置错误、本地POM文件与父项目POM文件版本或内容不一致所致,解决方法包括检查并修正父项目POM文件中的相对路径设置
    2024-09-09
  • Java数据脱敏常用方法(3种)

    Java数据脱敏常用方法(3种)

    数据脱敏常用在电话号码和身份证号,本文主要介绍了Java数据脱敏常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • springboot整合Shiro

    springboot整合Shiro

    这篇文章主要介绍了SpringBoot整合Shiro一些方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Java使用@Autowired注解获取对象为null的几种情况及解决方法

    Java使用@Autowired注解获取对象为null的几种情况及解决方法

    这篇文章主要给大家介绍了使用@Autowired注解获取对象为null的几种情况以及 解决方法,文中有详细的代码示例讲解,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • 模仿mybatis-plus实现rpc调用

    模仿mybatis-plus实现rpc调用

    这篇文章主要为大家介绍了模仿mybatis-plus实现rpc调用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 深入理解Spring的事务传播行为

    深入理解Spring的事务传播行为

    spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制),这篇文章主要给大家介绍了关于Spring事务传播行为的相关资料,需要的朋友可以参考下。
    2018-02-02
  • java stream使用指南之sorted使用及进阶方式

    java stream使用指南之sorted使用及进阶方式

    这篇文章主要介绍了java stream使用指南之sorted使用及进阶方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中获取泛型类型信息的方法

    Java中获取泛型类型信息的方法

    本文主要介绍了Java中获取泛型类型信息的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Java SPI用法案例详解

    Java SPI用法案例详解

    这篇文章主要介绍了Java SPI用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论