序列化就是将一个对象以及他的属性写入一个文件,保存在存中对象的状态

反序列化就是把保存的对象状态再读出来

实现序列化与反序列化就要使用到IO操作中文件的字节流输入与输出

inputStream与outputStream对字节流操作inputStreamReader与outputStreamWrite为字符流操作

input与output是对于java内存而言的           input输入是由外部----->内存               output输出是内存---->外部

任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象,我们可以用read()方法将其取出

任何有能力接收数据源(流)的javaio对象我们就可以看作是一个OutputStream对象,可以用write()方法接受

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的,Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点

1.字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以

字节流与字符流:http://blog.csdn.net/zxman660/article/details/7875799序列化分三步

1.创建FileOutputStream 对象,file是一个File类的对象

File file = new File("D:\\person.per");括号内表示生成文件的存储路径

FileOutputStreamfout = new FileOutputStream(file);

2.创建ObjectOutputStream 对象

ObjectOutputStream oos = null;

oos = new ObjectOutputStream(fout);

3.将对象写入

p是一个实例化的对象Person p = new Person("aaa",12);

oos.writeObject(p);

最后就得关闭输出流,节省资源

oos.close();

fout.close();

反序列化也分三步,与序列化对应

1.

1.新建FileInputStream 对象,读取文件

FileInputStream fin = new FileInputStream(file);

2.新建ObjectInputStream 对象

ObjectInputStream oin;

oin = new ObjectInputStream(fin);

3.读取文件并恢复为对象

Person per1 = (Person) oin.readObject();

fin.close();

oin.close();

public class Javaxuliehua {

public static void main(String[] args) {

//File file = new File("D:"+File.separator+"person.per");

File file = new File("D:\\person.per");

/**

* 序列化过程

*/

Person p = new Person("aaa",12);

try {

FileOutputStream fout = new FileOutputStream(file);

ObjectOutputStream oos = null;

oos = new ObjectOutputStream(fout);

oos.writeObject(p);

oos.close();

fout.close();

/**

* 反序列化过程

*/

FileInputStream fin = new FileInputStream(file);

ObjectInputStream oin;

oin = new ObjectInputStream(fin);

Person per1 = (Person) oin.readObject();

System.out.println(per1);

fin.close();

oin.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}catch (Exception e) {

e.printStackTrace();

}

}

}

class Person implements Serializable{

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}

java 不能反序列化_java中的序列化与反序列化相关推荐

  1. java序列化和反序列化对象_java中的序列化与反序列化,还包括将多个对象序列化到一个文件中...

    package Serialize; /** * Created by hu on 2015/11/7. */ //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用 import java. ...

  2. java中序列化与反序列化_Java中的序列化

    java中序列化与反序列化 Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息. 因此,如果我们已 ...

  3. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  4. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  5. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  6. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  7. OWASP TOP 10(六)反序列化漏洞(序列化和反序列化、漏洞原理、PHP中的序列化和反序列化、魔术方法、Typecho_v1.0中的反序列化漏洞)

    文章目录 反序列化漏洞 一.概述 1. 序列化和反序列化 2. 序列化的目的 二.PHP中的序列化与反序列化 1. 概述 2. 示例序列化与反序列化 3. 反序列化漏洞 - PHP中的魔术方法 - T ...

  8. 谈谈:.Net中的序列化和反序列化

    序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一 ...

  9. .Net 中关于序列化和反序列化Json的方法

    .Net SDK中关于序列化和反序列化Json的方法 项目中遇到和服务端交互时需要传递数据包为json格式的包,所以在服务端和SDK中都需要对json进行解析和组合的操作, 并且对一些复杂结构的jso ...

最新文章

  1. 关于拆分活动页为独立仓库的一点思考
  2. JDBC编程的事务处理
  3. Spring5源码 - 06 Spring Bean 生命周期流程 概述 01
  4. poj-1845 Sumdiv nyoj - 928 小M的因子和
  5. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务
  6. sybase数据库配置经验交流
  7. Java基础提高学习笔记2
  8. 关于软件测试工程师所应该具备的能力,就业前景还有适合女生从事吗?
  9. Linux串口驱动分析初始化
  10. android微信发现代码,微信代码各种隐藏盘点 99%用户都不知道的微信代码
  11. 教师要合理使用计算机,教师职称计算机考试题库
  12. CV领域论文查找方法
  13. 这次,大数据工程师赢了!
  14. IOS开发之——手动设置屏幕旋转
  15. 如何用批处理文件删除某个文件
  16. 服务器账号登录失败怎么回事,远程连接云服务器登录失败是什么原因
  17. ios 项目开发中总结
  18. %在c语言中起什么作用
  19. npm安装electron时报Error: EPERM: operation not permitted, scandir.....
  20. 转载:对大学 IT 专业教育的反馈

热门文章

  1. 教你如何用node.js开发微信公众号(一)
  2. 五节点HadoopHA安装教程
  3. matlab函数每天进步一点点
  4. Windows删除文件时显示找不到该项目 1
  5. IntelliJ Idea 常用快捷键 列表
  6. jumpserver 堡垒机环境搭建(图文详解)
  7. 分布式系统之通信技术学习
  8. Java中的引用类型(强引用、弱引用)和垃圾回收
  9. 【收藏】13个CSS3快速必备开发工具
  10. .在OnPaint()函数和在OnEraseBkgnd()重绘图的区别