当前位置: 首页 > 科技观察

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

时间:2023-03-17 20:57:20 科技观察

大家好,我是Java进阶。前言这篇文章主要学习了ObjectInputStream类实现了对象的反序列化,ObjectOutputStream类实现了对象的序列化流。接下来,小编就带大家一起来学习吧!一、ObjectInputStream类1、ObjectInputStream是对象的反序列化流,它是InputStream类的一个子类。2.ObjectInputStream类的构造函数publicObjectInputStream(InputStreamin):创建一个指定的输入流对象来读取ObjectInputStream。in的参数表示指定的输入流对象。示例:FileInputStreamfs=newFileInputStream("test.txt");ObjectInputStreamos=newObjectInputStream(fs);3.使用ObjectInputStream类实现对象的反序列化。示例importjava.io.*;classPersonimplementsSerializable{//实现序列化接口privateStringid,name;privateintage;//构造方法publicPerson(Stringid,Stringname,intage){this.id=id;this.name=name;this.age=age;}publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}publicclassP18{publicstaticvoidmain(String[]args)throwsException{//创建文件输入流对象,读取指定文件FileInputStreamfs=newFileInputStream("text/test");//创建对象输入流ObjectInputStreamos=newObjectInputStream(fs);//读取Person对象Personp=(Person)os.readObject();System.out.println("读取文本数据后显示:");System.out.println("id="+p.getId()+"\tname="+p.thegetName()+"\tage="+p.getAge());}}的结果如下图所示:从上面的代码来看,因为Person类中的属性是私有的,使用访问器的set和get方法。当调用ObjectInputStream的readObject()方法读取text目录下test的Person对象的数据时,这就是反序列化。2.ObjectOutputStream类1.ObjectOutputStream是对象的序列化流,它是OutputStream类的子类。2、ObjectOutputStream类的构造函数publicObjectOutputStream(OutputStreamout):创建一个指定的输出流对象,并写入到ObjectOutputStream中。参数out表示指定的输出流对象。示例:FileOutputStreamfs=newFileOutputStream("test.txt");ObjectOutputStreamos=newObjectOutputStream(fs);对象输出流使用writeObject(Objectobj)方法将一个对象obj写入文件,对象输入流使用readObject()方法从source中读取一个对象到程序中。3、使用ObjectOutputStream类实现对象的序列化实例//构造方法publicPerson(Stringid,Stringname,intage){this.id=id;this.name=name;this.age=age;}publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicstaticvoidmain(String[]args)throwsIOException{//创建一个Person对象Personp=newPerson("C01","Advanced",18);System.out.println("写入文件前的数据:");System.out.println("id="+p.getId()+"\tname="+p.getName()+"\tage="+p.getAge());//创建文件输出流对象并将数据写入text目录下的test.txt文件FileOutputStreamfs=newFileOutputStream("text/test.txt");//创建对象输出流ObjectOutputStreamos=newObjectOutputStream(fs);os.writeObject(p);}}运行结果如下图所示:从上面的代码来看,首先实例化了Person对象,它的id是c01,名字是advanced,age为18调用ObjectOutputStream的writeObject()方法时,将Person对象写入到text目录下的test.txt中。这样就实现了连载!3.小结本文主要介绍ObjectInputStream类和ObjectOutputStream类。ObjectInputStream类是对象的反序列化流。它是InputStream类的子类。介绍了它的构造方法和方法,通过实例学习使用ObjectInputStream类实现对象的反序列化。ObjectOutputStream类是对象的序列化流,是OutputStream类的子类。通过一个例子,学习使用ObjectOutputStream类来实现对象的序列化。希望本文的学习对您有所帮助!