序列化流(对象操作输出流)反序列化流(对象操作输入流)

news2024/9/27 15:18:43

可以把Java中的对象写到本地文件中

序列化流(对象操作输出流)

构造方法

成员方法

使用对象输出流将对象保存到文件会出现NotSerializableException异常

解决方案:需要让Javabean类实现Serializable接口

Student

package myio;

import java.io.Serializable;

public class Student implements Serializable {
    private String name;
    private int age;

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

ObjectStreamDemo

package myio;

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

public class ObjectStreamDemo {
    public static void main(String[] args) throws IOException {
        Student stu = new Student("zhangsan",20);
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\Web\\API\\src\\myio\\e.txt"));
        oos.writeObject(stu);
        oos.close();
    }
}

反序列化流(对象操作输入流)

构造方法

成员方法

package myio;

import java.io.*;

public class ObjectStreamDemo2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\Web\\API\\src\\myio\\e.txt"));
        Object o = ois.readObject();
        System.out.println(o);
        ois.close();
    }
}

在这个里面需要注意的是版本号的问题,这样在更改之后不会报错

package myio;

import java.io.Serializable;

public class Student implements Serializable {
    private static final long serialVersionUID = 5982546292687225019L;
    private String name;
    private int age;

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

自动生成这个版本号

复制Serializable

点击Settings

在里面搜索Settings

把下面的这两个勾选上

这样应用到idea中就可以自动生成这个版本号了

如果想要隐藏一些数据,就可以把这个隐藏

总结

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

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

相关文章

Claude 的上下文检索功能提升了 RAG 准确率,这会是人工智能革命?

前言 在人工智能领域不断进步的过程中,人们对更准确且具备上下文理解能力的响应的追求,催生了诸多突破性创新。 而 Claude 的上下文检索技术就是其中一项进步,有望显著提升检索增强生成 (RAG) 系统的表现。 可能有同学就要问了:…

DDL 超时,应该如何解决 | OceanBase 用户问题集萃

问题背景 在OceanBase的社区问答里常看到有用户发帖提出DDL超时的问题, 如“执行 DDL 超时,为何调大超时时间不生效?” 。但很多帖子的回答都没有完美解决。因此,这里把相关的解决思路在这里分享给大家。 帖子里对这类问题的描述…

2、 如何提高电脑运行速度 (改虚拟内存)?

改下电脑C磁盘的虚拟内存 方法如下: ① 按下电脑键盘上的 win E 键 , 然后鼠标移动到左边的【此电脑上】 然后,按下鼠标右键,选择【属性】 ② 然后,选择【高级系统设置】 4、选择【高级】,选择性能里面…

SPSS26统计分析笔记——5 卡法检验

1 卡方检验原理 卡方检验由卡尔皮尔逊(Karl Pearson)于1900年首次提出,是一种针对频数数据(定类数据或计数数据)的假设检验方法。它通过比较实际观测次数与理论期望次数之间的差异,构造出 χ 2 {\chi^2} χ…

seL4 Threads(四)

官网链接: Threads Threads 这篇教程主要是使用seL4中的threads。 TCB Thread Control Blocks seL4提供了线程代表执行的上下文以及管理处理器时间。seL4中的线程是通过线程控制块对象(TCB)实现的,每个内核线程都有一个线程控制块。 线程…

linux服务器安装原生的php环境

在CentOS上安装原生的PHP环境相对简单。下面是一个详细的步骤指南,适用于CentOS 7及更高版本。 ### 第一步:更新系统 首先,确保你的系统是最新的: sudo yum update -y ### 第二步:安装EPEL和Remi仓库 1. **安装EP…

Windows内核编程基础(3)

内存分配 在应用层编程时,系统提供了GlobalAlloc/HeapAlloc/LocalAlloc等函数。C/C库提供了malloc函数,以及new操作符在堆上分配内存。 在我前面一个关于Windows页交换文件的博客中,介绍了虚拟内存, 虚拟内存是计算机系统内存管…

古月居全新改版上线:AI 大模型“古月知道”引领 ROS 学习新体验

前言 古月居自成立以来,一直致力于为广大 ROS(机器人操作系统)爱好者和开发者提供优质的学习资源和社区交流平台。经过长期的用户调研和反馈,我们发现旧版古月居在使用过程中存在一些不便之处。 为了更好地服务大家,…

如何生成谷歌临时邮箱?

谷歌的Gmail作为全球最受欢迎的邮件服务之一,不仅因其稳定性和强大的功能而备受青睐,还因为它支持临时邮箱功能,这一功能能够极大地提升用户在各种场景下的使用灵活性。无论是处理一次性事务、注册新账户还是防止垃圾邮件,Gmail的…

通义模型Prompt调优的实用技巧

1. 目录 1. prompt工程简介 2. Prompt设计 2.1 Prompt主要构成要素 2.2 Prompt编写策略 策略一:对较难被准确遵循的复杂规则可拆分为多条规则,有助于提升效果 策略二:适当冗余关键信息 策略三:使用分隔符给Prompt分段 策…

类与对象—python

一、类的含义 1.1类的作用(理解) 收集学生信息时,如果让同学们自主填写,信息的顺序、格式不一,内容混乱。如果发给同学们既定的表格,同学们按照规定的顺序、格式进行填写,那信息就会一目了然&…

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…

path_provider插件的用法

文章目录 1. 概念介绍2. 实现方法3. 示例代码我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值,如果遇到…

大数据-147 Apache Kudu 常用 Java API 增删改查

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【学习笔记】 AD24中元器件重叠系统不报错的解决方案(消除报错)

【学习笔记】 AD24中PCB设计元器件重叠后系统不报错的解决方案(如何主动屏蔽报错) 一、Component Clearance未开启使能的解决方案二、最小水平间距设置错误的解决方案三、未开启设计规则检查的解决方案四、设计规则检查中 “在线”和“批量”的含义五、为…

开源的CDN:jsDelivr+Github加速图片加载

文章目录 20240530更新 网站加载的图片耗时,将图片使用jsDelivr进行加速。 每次打开静态网站的时候,都会发现页面的内容已经加载出来了,但是图片还是一片白,就考虑如何让图片能够更快的加载出来。 后面发现可以用jsDelivr加速Gi…

自然场景文本定位系统源码分享

自然场景文本定位检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

南京市副市长吴炜一行至天洑软件参观调研

近日,南京市副市长吴炜、南京市工信局副局长代吉上、南京市科技局副局长王愿华、江宁开发区管委会副主任易骏飞一行至天洑软件参观,调研工业软件重点企业方案,天洑软件副总经理冯克列、总工程师郭阳、研发部部长谢佳雯陪同调研。 Q1&#xff…

南开大学联合同济大学发布最新SOTA Occ OPUS:使用稀疏集进行占据预测,最快实现8帧22FPS

Abstract 占据预测任务旨在预测体素化的 3D 环境中的占据状态,在自动驾驶社区中迅速获得了关注。主流的占据预测工作首先将 3D 环境离散化为体素网格,然后在这些密集网格上执行分类。然而,对样本数据的检查显示,大多数体素是未占…

Linux:编译,调试和Makefile

一丶vim编译器 ### 基本概念 模式:Vim有几种不同的模式,包括: 命令/正常/普通模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 插入模…