Java基础IO流(四)序列化与反序列化

对象的序列化与反序列化:

对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化。

序列化流(ObjectOutInputStream),是过滤流  -------writeObject

反序列化流(ObjectInputStream)-----raedObject

序列化接口(Serializable)

  对象必须实现序列化接口,才能进行序列化,否则出现异常

 这个接口,没有任何方法,只是一个标准。

案例描述:Student,将它序列化到文件中,再反序列化读出。

Student类:

package Blog;

import java.io.Serializable;

public class Student implements Serializable{

    private String stuno;
    private String stuname;
    private int stuage;

    public Student(String stuno, String stuname, int stuage) {
        super();
        this.stuno = stuno;
        this.stuname = stuname;
        this.stuage = stuage;
    }

    public Student() {
        super();
    }

    public String getStuno() {
        return stuno;
    }

    @Override
    public String toString() {
        return "Student [stuno=" + stuno + ", stuname=" + stuname + ", stuage=" + stuage + "]";
    }

    public void setStuno(String stuno) {
        this.stuno = stuno;
    }

    public String getStuname() {
        return stuname;
    }

    public void setStuname(String stuname) {
        this.stuname = stuname;
    }

    public int getStuage() {
        return stuage;
    }

    public void setStuage(int stuage) {
        this.stuage = stuage;
    }

}

序列化Student到obj.dat中

package Blog;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class ObjectSeriaDemo1 {

    public static void main(String[] args) throws Exception{
        String file = "obj.dat";
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));

        Student stu = new Student("1001","zhangsan",20);
        oos.writeObject(stu);
        oos.flush();
        oos.close();

    }
}

反序列化obj.dat

package Blog;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class ObjectSeriaDemo1 {

    public static void main(String[] args) throws Exception{
        String file = "obj.dat";

        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
        Student stu = (Student)ois.readObject();
        System.out.println(stu);
        ois.close();
    }
}

原文地址:https://www.cnblogs.com/deepSleeping/p/10067747.html

时间: 2024-11-05 16:10:34

Java基础IO流(四)序列化与反序列化的相关文章

java 21 - 13 IO流之序列化和反序列化

序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输.对象 -- 流数据(ObjectOutputStream) 构造方法:ObjectInputStream(InputStream in)  创建从指定 InputStream 读取的 ObjectInputStream 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象.流数据 -- 对象(ObjectInputStream) 构造方法:ObjectInputStream(InputStream in)  创建从指定

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作

Java 基础 IO流(转换流,缓冲)

一,前言 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStreamWriter,这又是什么意思呢 二,转换流 2.1 OutputStreamWriter类 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节.它的作用的就是,将字符串按照指

Java基础-IO流

简单的使用IO流是很简单的~ package com.j2se.d59.demo; import java.io.*; //IO里的对象来自于java.io.*; //IO流的输入输出是相对于内存RAM的 //分类:单位[字节流.字符流]or方向[输入流.输出流]or功能[节点流.处理流] //所有的IO流由四个抽象类扩展而来: //InputStream 的子类 FileInputStream BufferedInputStream //OutputStream 的子类FileInputStr

黑马程序猿——JAVA基础——IO流

----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一. 一.IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流     二.IO流的四大抽象类: 字符流:Reader Writer 字节流:InputStream(读数据) OutputStream(写数据)     三.InputStream的基本方法 int read() throws

Java基础IO流(一)

IO概念: 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等.在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为"流",程序允许通过流的方式与输入输出设备进行数据传输.Java中的"流"都位于java.io包中,成为IO(输入输出)流. IO分类: IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可以分为输入流和输出流,程序从输入流中读取

黑马程序员——Java基础——IO流

第一讲 IO概述 1概述:IO流:输入(Input与Output流) 2特点: a.IO流用于数据传输: b.按操作分为字节流与字符流 c.按流向分:输入流和输出流 3.常用IO流的基类 1)字节流的基类:InputStream和OutpuStream 2)字符流的基类:Reader和Writer 第二讲 字符流 一.简述 1.字符流的对象融合了编码表.使用的是默认的编码 2.字符流只能用于文字处理,而字节流可以处理其他: 3.下列把FileWriter和FileReader一起讲 1 pack

JAVA基础-IO流(一)

一.IO流 IO流是Java为方便我们对文件的读写进行操作而提供的一种技术.按照读取写入文件的方式不同可以分为字符流和字节流,而每个流派按照功能又分为读和写.字符流读写操作的根类为Reader和Writer,其实现的常用子类分别为.写:PrintWriter.FileWriter.BufferedWriter.OutputStreamWriter(这个为转换流后边会详细说).读:BufferedReader.InputStreamReader(转换流). FileReader. 二.Reader

Java基础——IO流

IO流1.java.io.File 1.凡是与输入输出相关的类.接口都定义在java.io下 2.File是一个类,可以由构造器创建其对象.此对象对应着一个文件(.txt .avi .ppt .doc .mp3 .jpg)或文件目录 3.File类对象是与平台无关的(Java的跨平台特性) 4.File中的方法,仅涉及到如何创建,删除,重命名等(表面功夫),只要涉及到文件内容的,File是无能为力的,必须由io流来完成 5.File类的对象常常作为io流的具体类的构造器的形参 访问文件名: ge