序列化对象(ObjectOutputStream,ObjectInputStream)

news2024/12/27 14:21:40

1、对象序列化

  • 作用:以 内存 为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化
  • 使用到的流是对象字节输出流:ObjectOutputStream
package com.csdn.d7_serializable;
import java.io.*;
public class ObjectOutputStreamDemo1 {
    public static void main(String[] args) throws IOException {
        //1.创建学生对象
        Student s = new Student("小明", "xm", "123456", 21);
        //2.对象序列化:使用对象字节输出流包装字节输出流管道
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src\\csdn.txt"));
        //3.直接调用序列化方法
        oos.writeObject(s);
        //4.释放资源
        oos.close();
        System.out.println("序列化完成了~~");
        @Override
        public String toString() {
          return "Student{" +
                 "name='" + name + '\'' +
                 ", loginName='" + loginName + '\'' +
                 ", passWord='" + passWord + '\'' +
                 ", age=" + age +
                 '}';
        }
    }
}
//对象如果要序列化,必须实现Serializable序列化接口
class Student implements Serializable {
    private String name;
    private String loginName;
    private String passWord;
    private int age;

    public Student(String name, String loginName, String passWord, int age) {
        this.name = name;
        this.loginName = loginName;
        this.passWord = passWord;
        this.age = age;
    }

}
构造器说明
public ObjectOutputStream(OutputStream out)把低级 字节 输出流 包装 成高级的对象 字节 输出流
方法名称说明
public final void  writeObject(Object  obj)把 对象 写出去到对象序列化流的文件中去

  • 为了好展示,我把序列化的文本换行了,反序列化的时候,不能换行,否则会报错 :Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: EFBFBDEF

 2、对象序列化的含义是什么?

  • 把对象数据存入到文件中去

 3、对象序列化用到了哪个流?

  • 对象字节输出流 ObjectOutputStream
  • public final  void  writeObject(Object  obj)

 4、序列化对象的要求是怎么样的?

  • 对象必须实现序列化接口

 1、对象反序列化

  • 使用到的流是对象字节输入流:ObjectInputStream
  • 作用:以内存为基准,把存储到 磁盘 文件中去的对象数据恢复成 内存 中的对象,称为对象反序列化
package com.csdn.d7_serializable;
import java.io.*;
public class ObjectInputStreamDemo2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //1.创建对象字节输入流管道包装低级的字节输入流管道
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src\\csdn.txt"));
        //2.调用对象字节输入流的反序列化方法
        Student s = (Student) ois.readObject();

        System.out.println(s);
        //Student{name='小明', loginName='xm', passWord='123456', age=21}
    }
}
构造器说明
public ObjectInputStream(InputStream out)低级 字节流输入流 包装 成 高级 的对象字节输入流
方法名称说明
public final Object  readObject()把存储到 磁盘 文件中去的 对象 数据恢复成 内存 中的 对象 返回

 2、对象反序列化的含义是什么?

  • 把磁盘中的对象数据恢复到内存的Java对象中

 3、对象反序列化用到了哪个流?

  • 对象字节输入流ObjectInputStream
  • public  final Object  readObject()

 4、 密码不参与序列化的操作步骤

  • 防止别人获取密码
    private String name;
    private String loginName;
    //transient修饰的成员变量不参与序列化
    private transient String passWord;
    private int age;

  • Student { name = ' 小明 ' ,  loginName = ' xm ' ,  passWord = ' null ' , age = 21 }
    //声明序列化的版本号码
    //序列化的版本号与反序列化的版本号必须一致才不会出错!
    private static final long serialVersionUID = 1;
    private String name;
    private String loginName;
    //transient修饰的成员变量不参与序列化
    private transient String passWord;
    private int age;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫程序设置代理常见错误代码及解决方法

Python爬虫程序设置代理是爬虫程序中常用的技巧,可以有效地绕过IP限制,提高爬虫程序的稳定性和效率。然而,在设置代理时,常会出现各种错误代码,这些错误代码可能会影响程序的正常运行,甚至导致程序崩溃。本…

Serverless 数仓技术与挑战(内含 PPT 下载)

近期,Databend Labs 联合创始人张雁飞发表了题为「Serverless 数仓技术与挑战」的主题分享。以下为本次分享的精彩内容: 主题: 「Serverless 数仓技术与挑战」 演讲嘉宾: 张雁飞 嘉宾介绍: Databend Labs 联合创始人…

Jenkins Job的Migrate之旅

场景 使用Jenkins 做为应用的定时任务处理, 在上面建立的800个左右的Job, 这个环境运行了很多年, 当初安装的最新版本是Jenkins 1.642.3, 现在因为OS需要升级等原因, 驻在上面的Jenkins 服务器也需要一并升级,在新的服…

【DevOps】Docker 容器及其常用命令

Docker 容器及其常用命令 1.容器2.Docker 常用命令2.1 Docker 环境信息2.2 容器生命周期管理2.2.1 docker run2.2.2 docker start / stop / restart 2.3 镜像仓库命令2.3.1 docker pull2.3.2 docker push 2.4 镜像管理2.4.1 docker images2.4.2 docker rmi / rm 2.5 容器运维操…

一键制作纯文字背景视频,让你轻松制作短视频!

你是否曾经被繁琐的视频制作流程所困扰?不用担心,现在有了纯文字视频制作神器,让你成为视频制作大师的梦想不再遥远! 首先,让我们来看看纯文字视频制作神器主要的功能之一:一键生成短视频。只需输入你的文…

已解决: Microservice Error: Timeout Error: Service didn‘t respond in time

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

ubuntu18.04安装docker

ubuntu18.04安装docker 文章目录 ubuntu18.04安装docker一.安装1.更新软件库索引2.安装一些必要的软件包3.添加Docker的官方GPG密钥4.添加Docker软件库5.再次更新软件库索引6.安装Docker CE7.启动Docker并设置开机启动8.验证Docker安装9.(若要让非root用户可以运行Docker命令)可…

【广州华锐互动】马属直肠检查3D虚拟仿真课件

随着科技的发展,医疗行业也在不断地进行创新。其中,广州华锐互动开发的马属直肠检查3D虚拟仿真课件,为医学教育和实践操作带来了新的可能性。它不仅可以帮助医生提高诊断准确率,还可以让医学生在没有真实病人的情况下进行实践操作…

admin后台管理

admin后台管理 django 提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用 admin配置步骤 创建后台管理帐号- 该账号为管理后台最高权限账号…

删除表中的数据

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: delete from 表名 where 记录匹配条件; 说明:如果**不写where**子句,表示无条件,删除表中的**所有记…

9月25日星期一,今日早报简报微语报早读

9月25日,星期一,早报简报微语早读分享。 1、祝贺中国队!开幕首日中国队20金7银3铜,共计30枚奖牌,位列奖牌榜第一名; 2、NBL深蓝官宣:陕西罢赛遭重罚 罚款100万取消评奖资格; 3、中…

NPDP是什么?考了有用吗?

1)NPDP是什么? NPDP,全称为New Product Development Professional,即新产品开发专业人员。NPDP认证是由世界产品开发协会(PDMA)推出的一项专业认证。它旨在评估和认可个人在新产品开发领域的专业知识和技能…

github代码提交过程详细介绍

1、下载github上面的代码 (1)在github网站上,找到想要下载的代码仓库界面,点击Code选项就可以看到仓库的git下载地址; (2)使用命令下载:git clone 地址; 2、配置本地git…

基于YOLOv8模型的垃圾满溢检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的垃圾满溢检测系统可用于日常生活中检测与定位车辆垃圾(garbage)、垃圾桶(garbage_bin)和垃圾满溢(overflow)目标,利用深度学习算法可实现图片、视频、摄像头等…

离散小波变换(概念与应用)

目录 概念光伏功率预测中,如何用离散小波变换提取高频特征概念 为您简单地绘制一些示意图来描述离散小波变换的基本概念。但请注意,这只是一个简化的示意图,可能不能完全捕捉到所有的细节和特性。 首先,我将为您绘制一个简单的小波函数和尺度函数的图像。然后,我会提供一…

oracle 根据分号分割为多个列

oracle 没有split 函数,因此没法直接使用,但是时间上会遇到需要分割的时候,可以使用正则表达式 SELECT REGEXP_SUBSTR(administration, [^;], 1, 1) AS SKILL1, REGEXP_SUBSTR(administration, [^;], 1, 2) AS SKILL2, REGEXP_SUBSTR(admini…

php万能表单系统源码 支持自定义+收费表单活动报名 适合多行业

在众多的表单系统中,PHP万能表单系统因其灵活性和可扩展性备受开发者的青睐。PHP万能表单系统是一款基于PHP语言的表单生成器,它可以帮助开发者快速生成各种类型的表单,如注册、登录、留言等。下面给大家分享一款php万能表单系统源码&#xf…

Android12之仿Codec2.0实现传递编解码器组件本质(四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

2023-9-25 耍杂技的牛

题目链接&#xff1a;耍杂技的牛 #include <iostream> #include <algorithm>using namespace std;typedef pair<int, int> PII;const int N 50010;int n; PII cow[N];int main() {cin >> n;for(int i 0; i < n; i ){int w, s;cin >> w >…