首页 > 编程语言 >java序列化 教程

java序列化 教程

时间:2023-03-05 15:12:17浏览次数:42  
标签:教程 java name stu 序列化 out public String

序列化的 条件:

序列化必须要满足两个条件:

1. 该对象必须实现 java.io.Serializble 接口

2. 改对象的所有属性必须是可序列化的,若有属性不可序列化也须注明是短暂的

 

注:检验一个类是否可以被序列化,可以检验该类是否实现 Serializble 接口

序列化的定义:

  把对象转换成可传输的字节序列的过程

 

反序列化的定义:

  把字节序列转还原对象的过程

 

为什么要序列化?

  最终目的地为了 跨平台存储 和 进行网络传输 而进行网络传输都是 IO 而进行IO所支持的还是 数组

 

序列化实例:

定义 student 类 并 实现了 java.io.Serializble 接口

public class studentDemo implements java.io.Serializable {
    public String name;
    public int phone;
    public String address;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPhone() {
        return phone;
    }
    public void setPhone(int phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

 

 

------序列化------

 序列化成功之后会在当前路径创建 以 “张三”名字 为文件名的 .ser 的文件

序列化 需要用到 FileOutputStream() 文件输出流  和 ObjectOutputStream() 对象输出流 

使用 文件输出流 创建 文件路径和名称 再通过 对象流的 writeObjec()方法 写入到系统中

 

每次使用完 IO流 一定要记得 关闭流  close() 方法

public class SerializeDemo {
    public static void main(String[] args) {
        studentDemo stu = new studentDemo(); 
        stu.setName("张三");
        stu.setPhone( 1233467733 );
        stu.setAddress("江西");

        try {
            FileOutputStream fileOut = new FileOutputStream("student" + stu.name + ".ser"); // 创建 文件路径、文件名字
            ObjectOutputStream out = new ObjectOutputStream(fileOut); // 创建 对象输出流系统
            out.writeObject( stu ); // 写入需要的对象名
            fileOut.close(); // 关闭文件流
            out.close(); // 关闭对象输入流

            System.out.println( "---序列化对象成功---" );

        } catch ( IOException e) {
            e.printStackTrace(); // 出现异常 初始化try
        }
    }
}

 

-------反序列化-------

反序列化是将 序列化的文件的内容读取出来的过程,和序列化是相对的

需要使用到 FileInputStream() 文件输入流 和 ObjectInputStream() 对象输入流  再用对象流的 readObject() 读取文件中的内容

 

public class UnSerializble  {
    public static void main(String[] args) {
        String name = "张三";

        try {
            FileInputStream fileInt = new FileInputStream("student" + name + ".ser"); // 创建文件输入流
            ObjectInputStream ois = new ObjectInputStream( fileInt );  // 创建对象输入流 
            studentDemo stu = (studentDemo) ois.readObject(); // 读取的对象强制成为 studentDemo 类

            System.out.println("---反序列化内容---");
            System.out.println( "name:" + stu.getName() );
            System.out.println( "phone:" + stu.getPhone());
            System.out.println( "address:" + stu.getAddress());

            fileInt.close();
            ois.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

 

标签:教程,java,name,stu,序列化,out,public,String
From: https://www.cnblogs.com/xiaoxiblog/p/17180549.html

相关文章

  • java8新特性-引用流ReferencePipeline
    ReferencePipeline实现了Stream接口,Stream接口定义了顺序和并行聚合的元素序列操作。publicinterfaceStream<T>extendsBaseStream<T,Stream<T>>{Stream<T......
  • 用javascript实现轮播图
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......
  • 斯坦福课程 UE4 C++ ARPG游戏实例教程 01.基础AI与行树
    斯坦福课程UE4C++ARPG游戏实例教程0.绪论前言&摘要本篇文章是基于斯坦福UE4C++课程的学习记录。因为B站用户surkea由于学业原因,暂停了课程笔记的更新,这里狗尾续貂,将......
  • 模型类序列化器、ModelSerializer用法、exclude排除某个字段用法、extra_kwargs中用wr
    1.序列表表所有字段返回结果:   2.url:   3.序列化表和表里的所有字段:   4.views代码:   5.序列化表中的指定字段:   6.exclude......
  • 斯坦福课程 UE4 C++ ARPG游戏实例教程 0.绪论
    斯坦福UE4C++课程学习笔记0.绪论前言UEC++在国内目前还处于比较新的一个领域,网上能找到的教程多为蓝图教程,且质量良莠不齐。终于在B站找到了外网搬运的斯坦福UEC++......
  • java-spring aop
    导读AOP面向切面编程AspectorientedProgrammingOOP面向对象编程ObjectorientedProgramming作用:在不惊动原始设计的基础上进行功能增强。1、导入坐标<!--......
  • 以下总结了Java一些面试前准备和技术参考题,希望对你有所帮助
    以下真实模拟JAVA面试场景:感谢您参加我们的面试;以下是我们总结一些面试前准备和技术参考题,希望对你有所帮助。首先,你需要先准备下工作相关的自我介绍,包括以下内容:几年......
  • 学会了Java 8 Lambda表达式,简单而实用
    OneAPM摘要:此篇文章主要介绍Java8Lambda表达式产生的背景和用法,以及Lambda表达式与匿名类的不同等。本文系OneAPM工程师编译整理。Java是一流的面向对象语言,除了部分......
  • Java小练习-找水仙花数
    什么是水仙花数要找水仙花数,我们首先要知道什么是水仙花数。水仙花数是指一个n位数(n>3),它的每个位上的数字的n次幂之和等于它本身。(列如:1^3+5^3+3^3=153)看一下真正的水......
  • JavaScript filter
    使用 ​​filter()​​​ 过滤“空”值,如 ​​null​​​、​​undefined​​​ 或空字符串,可以使用 ​​.filter(Boolean)​​ 的缩写方法也可以constwords=['s......