java序列化和反序列化练习
【题目】
1.编写一个程序,运行Java控制台程序,检测本地是否保存学生对象(反序列化),如果保存,则输出学生信息,如果没有保存,则通过学生类Student创建一个学生对象,将学生信息输出并保存到本地文件中(序列化)。
【编码实现】
学生类:
/*** @author HackerAC(Written by Mr.XuFufang)*/
import java.io.Serializable;public class Student implements Serializable{private static final long serialVersionUID = 1L;private String name;private char sex;public Student(String name, char sex) {this.name = name;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}@Overridepublic String toString() {return "Student [name=" + name + ", sex=" + sex + "]";}
}
测试类:
/*** 反序列化和序列化* @author HackerAC(Written by Mr.XuFufang)*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class Task03 {public static void main(String[] args) {File file = new File("F:\\test\\Student.txt");FileInputStream fis = null;ObjectInputStream ois = null;FileOutputStream fos = null;ObjectOutputStream oos = null;Student stu = null;try {fis = new FileInputStream(file);ois = new ObjectInputStream(fis);stu = (Student) ois.readObject();} catch (FileNotFoundException e1) {System.out.println("文件不存在!");System.exit(1);} catch (IOException e) {System.out.println("反序列化失败:本地文件中不存在Student对象!");} catch (ClassNotFoundException e) {System.out.println("反序列化失败:本地文件中不存在Student对象!");}try {fos = new FileOutputStream(file);oos = new ObjectOutputStream(fos);if (stu instanceof Student) {System.out.println("反序列化成功!");System.out.println(stu);} else {System.out.println("开始写入新的学生对象!");stu = new Student("序列化", '男');oos.writeObject(stu);oos.flush();System.out.println("序列化成功:对象信息写入完成!");}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (fis != null) {fis.close();}if (ois != null) {ois.close();}if (fos != null) {fos.close();}if (oos != null) {oos.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
java序列化和反序列化练习相关推荐
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- Java中如何引用另一个类里的集合_【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?...
Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: 序列化:对象序列化的最主要的用处就是在传递和保存对象 ...
- java序列化与反序列化(转)
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- java序列化和反序列化以及序列化ID的作用分析
java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...
- java序列化和反序列化_Java恶意序列化背后的历史和动机
java序列化和反序列化 与Java的序列化机制相关的问题已广为人知. 有效的Java 1st Edition (第10章)和有效的Java 2nd Edition (第11章)的整个最后一章都专门讨 ...
- 教你彻底学会Java序列化和反序列化
Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...
- 理论 | 教你彻底学会Java序列化和反序列化
这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...
- Java序列化与反序列化(一)
目录 序列化与反序列化 1.最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:transient 5. 父类的序列化 6. 自定义序列 ...
- Serializable详解(1):代码验证Java序列化与反序列化
说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...
- Java 序列化与反序列化
Java 序列化与反序列化 文章目录 Java 序列化与反序列化 1 序列化与反序列化的概念 2 核心类与关键字总览 3 序列化与反序列化的过程 3 应用示例 4 序列化版本号的作用 serialVe ...
最新文章
- 杨强教授力荐,快速部署落地深度学习应用的实践手册
- 以太坊PHP离线交易开发包
- apache cxf_Wildfly,Apache CXF和@SchemaValidation
- window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
- Linux基础-06-vi编辑器
- Mysql一直显示等待中_Mysql中的各种timeout
- BigDecimal的精度舍入模式详解
- linux redis命令客户端,Redis客户端
- php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
- AUTOCAD——圆命令
- idea主菜单栏(main menu)消失解决办法,无需重启
- jpg转bmp(使用libjpeg)
- 抖音、快手打起来了,互联网大佬集体内卷?
- 分享一款自用的强悍高清录制软件Bandicam4.3.4.1503中文便携特别版
- 计算机应用杂志论文格式要求,计算机应用专业论文格式说明.doc
- 如何使用Google Scholar(谷歌学术)
- 利用python进行数据分析学习笔记
- Component name XXX should always be multi-word
- 【Python】Python 可变对象和不可变对象
- 技术支持和测试的区别_同步带线性模组 丝杆线性模组和直线电机模组的区别及应用...
热门文章
- 2.企业应用架构模式 --- 组织领域逻辑
- 11.PHP-FPM pool
- 148. php in_array()
- 22. Yii 组件属性
- android11电视,谷歌发布首款Android TV版 基于Android 11开发者预览版
- Cglib动态代理实现原理
- UI自动化测试篇 :Selenium2(Webdriver)TestNG自动化测试环境搭建
- Sequence of methods in form and table in AX
- Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏
- Java中多态的实例