zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-03-15 22:04:13 时间

前言

本文主要学习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()+"	name="+p.getName()+"	age="+p.getAge());
  }
}

运行的结果如下图所示:

从上面的代码中因为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()+"	name="+p.getName()+"	age="+p.getAge());
//创建文件输出流对象,把数据写入text目录下的test.txt文件中
FileOutputStream fs=new FileOutputStream("text/test.txt");
//创建对象输出流
ObjectOutputStream os=new ObjectOutputStream(fs);
os.writeObject(p);
  }
}

运行的结果如下图所示:

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

三、总结

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