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

Java进阶学习交流

共 3574字,需浏览 8分钟

 · 2021-11-20

点击上方“Java进阶学习交流”,进行关注

后台回复“Java”即可获赠Java学习资料

春草明年绿,王孙归不归?

大家好,我是Java进阶者。

前言

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


一、 ObjectInputStream类

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

2.ObjectInputStream类的构造方法

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

例子:

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

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

import java.io.*;
class Person implements Serializable{// 实现序列化接口private String id,name;private int age;//构造方法public Person(String id,String name, int age) { this.id = id; this.name = name; this.age = age;}
public String getId() { return id;}
public void setId(String id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public int getAge() { return age;}
public void setAge(int age) { this.age = age;}
}public class P18{public static void main(String[] args) throws Exception {//创建文件输入流对象,读取指定的文件FileInputStream fs=new FileInputStream("text/test");//创建对象输入流ObjectInputStream os=new ObjectInputStream(fs);//读取Person对象Person p=(Person)os.readObject();System.out.println("读取文本的数据后显示:");System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge()); }}

运行的结果如下图所示:

27bdf3a13a6ba7d8029bf719e7911146.webp

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


二、ObjectOutputStream类

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

2.ObjectOutputStream类的构造方法

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

例子:

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

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

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

import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.io.Serializable;
public class Person implements Serializable{// 实现序列化接口private String id,name;private int age;//构造方法public Person(String id,String name, int age) { this.id = id; this.name = name; this.age = age;}
public String getId() { return id;}
public void setId(String id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public int getAge() { return age;}
public void setAge(int age) { this.age = age;}public static void main(String[] args) throws IOException {//创建一个Person对象Person p=new Person("C01","进阶者",18);System.out.println("写入文件前的数据:");System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge());//创建文件输出流对象,把数据写入text目录下的test.txt文件中FileOutputStream fs=new FileOutputStream("text/test.txt");//创建对象输出流ObjectOutputStream os=new ObjectOutputStream(fs);os.writeObject(p); }}

运行的结果如下图所示:

019e213cbd4d6f3153c2812fee4343e3.webp

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


三、总结

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

    我是Java进阶者,希望大家通过本文的学习,对你有所帮助!欢迎大家加我微信,有问题可以随时帮大家解决噢,交个朋友也好哇~

------------------- End -------------------

往期精彩文章推荐:

eb5fdc5a11eb14a43d64db465efa5a5f.webp

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Java学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报