IO学习(十二)序列化和反序列化
来源:互联网 发布:打字拼音软件下载 编辑:程序博客网 时间:2024/05/16 17:01
反序列化:输入流 ObjectInputStream
序列化:输出流 ObjectOutputStream
注意:
1.先序列化再反序列化,反序列化顺序必须和序列化一致
2.不是所有的对象都可以序列化,自定义的类若想序列化必须实现java.io.Serializable
Serializable是一个空接口,标识类可以被序列化
3.不是所有的属性都需要序列化,不需要序列化的属性可以使用transient关键字
下面是代码示例
首先给出一个实现Employee类,有两个属性,名字和工资,其中名字是不可序列化的,工资可以
class Employee implements Serializable{private transient String name;private double salary;public Employee() {// TODO Auto-generated constructor stub}public Employee(String name, double salary) {super();this.name = name;this.salary = salary;}public String getName() {return name;}public double getSalary() {return salary;}public void setName(String name) {this.name = name;}public void setSalary(double salary) {this.salary = salary;}}
public class Demo09 {public static void main(String[] args) throws IOException, ClassNotFoundException {seri();unseri();}/** * 序列化,输出流 * @throws IOException */public static void seri() throws IOException{//new一个Employee对象Employee emp=new Employee("depp",1234);//目标文件,序列化的对象放在这里File dest=new File("F:/Picture/test/test.txt");//选择流ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(dest)));oos.writeObject(emp);oos.flush();oos.close();}/** * 反序列,输入流 * @throws ClassNotFoundException */public static void unseri() throws IOException, ClassNotFoundException{//存放已经序列化对象的文件File src=new File("F:/Picture/test/test.txt");//选择流ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream(src)));Object obj=ois.readObject();//如果是Employee类的实例,则类型强转if(obj instanceof Employee){Employee emp=(Employee)obj;System.out.println(emp.getName()+" "+emp.getSalary());}ois.close();}}
java.io.StreamCorruptedException
这里一定要注意,反序列化一定要在序列化以后,并且对相同的一个文件进行写入读取操作
对象序列化以后是完全看不懂的,如下:(像“口”的那个符号出不来,忽视)
sr IO.Employee憌y.鰓5 D salaryxp@揌
0 0
- IO学习(十二)序列化和反序列化
- Java Io 对象序列化和反序列化
- java IO 序列化和反序列化
- IO流之序列化和反序列化
- IO流、序列化和反序列化
- Java学习笔记之IO(十三):对象的序列化和反序列化
- JAVA学习第五十六课 — IO流(十)对象的序列化和反序列化 & RandomAccessFile
- 序列和反序列化
- 序列和反序列化
- 对象的序列化与反序列化---IO学习笔记(四)
- .Net深入学习序列化和反序列化
- .Net深入学习序列化和反序列化
- 序列化和反序列化---学习笔记
- python 学习 -- json的序列化和反序列化
- Hadoop学习日志之序列化和反序列化
- Python3学习(32)--序列和反序列化(一)
- Python3学习(33)--序列和反序列化(二)
- IO Serializable 序列化和反序列化以及自定义的序列化
- 欧拉函数
- Centos 5 Oracle 11G 超详细安装
- Object-c------循环引用
- 33.Android热修复技术:AndFix的使用方法
- iOS 开发CocoaPods的使用
- IO学习(十二)序列化和反序列化
- 数据库--范式
- 第十一周实践项目5————摩托车继承自行车和机动车
- PHP strip_tags() 函数
- 第十周项目三 存储班长信息的学生类(1) (改法 2 )
- PHP & HTML5 学习 第四课 PHP变量
- MySQL主从数据库同步延迟问题解决
- Android应用优化_0.1版本
- Leetcode - Longest Increasing Subsequence