文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ObjectInputStream类实现对象的反序列,ObjectOutputStream类实现对象的序列化流

2024-12-02 16:32

关注

大家好,我是Java进阶者。

前言

本文主要学习ObjectInputStream类实现对象的反序列,ObjectOutputStream类实现对象的序列化流,接下来小编带大家一起来学习!

一、 ObjectInputStream类

ObjectInputStream是对象的反序列化流,它是InputStream类的子类。

ObjectInputStream类的构造方法

public ObjectInputStream(InputStream in):创建指定的输入流对象读取ObjectInputStream。参数in表示指定的输入流对象。

例子:

  1. FileInputStream fs=new FileInputStream("test.txt"); 
  2. ObjectInputStream os=new ObjectInputStream(fs); 

使用ObjectInputStream类实现对象的反序列化例子

  1. import java.io.*; 
  2.  
  3. class Person implements Serializable
  4. // 实现序列化接口 
  5. private String id,name
  6. private int age; 
  7. //构造方法 
  8. public Person(String id,String nameint age) { 
  9.         this.id = id; 
  10.         this.name = name
  11.         this.age = age; 
  12.  
  13. public String getId() { 
  14.         return id; 
  15.  
  16. public void setId(String id) { 
  17.         this.id = id; 
  18.  
  19. public String getName() { 
  20.         return name
  21.  
  22. public void setName(String name) { 
  23.         this.name = name
  24.  
  25. public int getAge() { 
  26.         return age; 
  27.  
  28. public void setAge(int age) { 
  29.         this.age = age; 
  30.  
  31. public class P18{ 
  32. public static void main(String[] args) throws Exception { 
  33. //创建文件输入流对象,读取指定的文件 
  34. FileInputStream fs=new FileInputStream("text/test"); 
  35. //创建对象输入流 
  36. ObjectInputStream os=new ObjectInputStream(fs); 
  37. //读取Person对象 
  38. Person p=(Person)os.readObject(); 
  39. System.out.println("读取文本的数据后显示:"); 
  40. System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge()); 
  41.   } 

运行的结果如下图所示:

从上面的代码中因为Person类中属性的私有的,使用访问器的方法set和get的方法,当调用ObjectInputStream的readObject()方法把text目录下的test的Person对象数据读取出来,这个就是反序列化。

二、ObjectOutputStream类

ObjectOutputStream是对象的序列化流,它是OutputStream类的子类。

ObjectOutputStream类的构造方法

public ObjectOutputStream(OutputStream out):创建指定的输出流对象写入ObjectOutputStream。参数out表示指定的输出流对象。

例子:

  1. FileOutputStream fs=new FileOutputStream("test.txt"); 
  2. ObjectOutputStream os=new ObjectOutputStream(fs); 

对象输出流使用writeObject(Object obj)方法将一个对象obj写入到一个文件,对象输入流使用readObject()方法从源中读取一个对象到程序中。

使用ObjectOutputStream类实现对象的序列化例子

  1. import java.io.FileOutputStream; 
  2. import java.io.IOException; 
  3. import java.io.ObjectOutputStream; 
  4. import java.io.Serializable
  5.  
  6. public class Person implements Serializable
  7. // 实现序列化接口 
  8. private String id,name
  9. private int age; 
  10. //构造方法 
  11. public Person(String id,String nameint age) { 
  12.         this.id = id; 
  13.         this.name = name
  14.         this.age = age; 
  15.  
  16. public String getId() { 
  17.         return id; 
  18.  
  19. public void setId(String id) { 
  20.         this.id = id; 
  21.  
  22. public String getName() { 
  23.         return name
  24.  
  25. public void setName(String name) { 
  26.         this.name = name
  27.  
  28. public int getAge() { 
  29.         return age; 
  30.  
  31. public void setAge(int age) { 
  32.         this.age = age; 
  33. public static void main(String[] args) throws IOException { 
  34. //创建一个Person对象 
  35. Person p=new Person("C01","进阶者",18); 
  36. System.out.println("写入文件前的数据:"); 
  37. System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge()); 
  38. //创建文件输出流对象,把数据写入text目录下的test.txt文件中 
  39. FileOutputStream fs=new FileOutputStream("text/test.txt"); 
  40. //创建对象输出流 
  41. ObjectOutputStream os=new ObjectOutputStream(fs); 
  42. os.writeObject(p); 
  43.   } 

运行的结果如下图所示:

从上面的代码中,首先是对Person对象进行实例化,它的id为c01,name为进阶者,年龄为18。当调用ObjectOutputStream的writeObject()方法将Person对象写入text目录下的test.txt。这就实现了序列化!

三、总结

本文主要介绍了ObjectInputStream类、ObjectOutputStream类。ObjectInputStream类是对象的反序列化流,它是InputStream类的子类,介绍了它的构造方法和方法,通过一个例子来学习使用ObjectInputStream类实现对象的反序列化。ObjectOutputStream类是是对象的序列化流,它是OutputStream类的子类,通过一个例子来学习使用ObjectOutputStream类实现对象的序列化。希望大家通过本文的学习,对你有所帮助!

 

来源:Java进阶学习交流内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯