【题目】

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序列化和反序列化练习相关推荐

  1. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  2. Java中如何引用另一个类里的集合_【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?...

    Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: 序列化:对象序列化的最主要的用处就是在传递和保存对象 ...

  3. java序列化与反序列化(转)

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  4. java序列化和反序列化以及序列化ID的作用分析

     java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...

  5. java序列化和反序列化_Java恶意序列化背后的历史和动机

    java序列化和反序列化 与Java的序列化机制相关的问题已广为人知. 有效的Java 1st Edition (第10章)和有效的Java 2nd Edition (第11章)的整个最后一章都专门讨 ...

  6. 教你彻底学会Java序列化和反序列化

    Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...

  7. 理论 | 教你彻底学会Java序列化和反序列化

    这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...

  8. Java序列化与反序列化(一)

    目录 序列化与反序列化 1.最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:transient 5. 父类的序列化 6. 自定义序列 ...

  9. Serializable详解(1):代码验证Java序列化与反序列化

    说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...

  10. Java 序列化与反序列化

    Java 序列化与反序列化 文章目录 Java 序列化与反序列化 1 序列化与反序列化的概念 2 核心类与关键字总览 3 序列化与反序列化的过程 3 应用示例 4 序列化版本号的作用 serialVe ...

最新文章

  1. 杨强教授力荐,快速部署落地深度学习应用的实践手册
  2. 以太坊PHP离线交易开发包
  3. apache cxf_Wildfly,Apache CXF和@SchemaValidation
  4. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
  5. Linux基础-06-vi编辑器
  6. Mysql一直显示等待中_Mysql中的各种timeout
  7. BigDecimal的精度舍入模式详解
  8. linux redis命令客户端,Redis客户端
  9. php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
  10. AUTOCAD——圆命令
  11. idea主菜单栏(main menu)消失解决办法,无需重启
  12. jpg转bmp(使用libjpeg)
  13. 抖音、快手打起来了,互联网大佬集体内卷?
  14. 分享一款自用的强悍高清录制软件Bandicam4.3.4.1503中文便携特别版
  15. 计算机应用杂志论文格式要求,计算机应用专业论文格式说明.doc
  16. 如何使用Google Scholar(谷歌学术)
  17. 利用python进行数据分析学习笔记
  18. Component name XXX should always be multi-word
  19. 【Python】Python 可变对象和不可变对象
  20. 技术支持和测试的区别_同步带线性模组 丝杆线性模组和直线电机模组的区别及应用...

热门文章

  1. 2.企业应用架构模式 --- 组织领域逻辑
  2. 11.PHP-FPM pool
  3. 148. php in_array()
  4. 22. Yii 组件属性
  5. android11电视,谷歌发布首款Android TV版 基于Android 11开发者预览版
  6. Cglib动态代理实现原理
  7. UI自动化测试篇 :Selenium2(Webdriver)TestNG自动化测试环境搭建
  8. Sequence of methods in form and table in AX
  9. Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏
  10. Java中多态的实例