第十五天2
来源:互联网 发布:货币汇率软件 编辑:程序博客网 时间:2024/06/06 21:42
ObjectInputStream:反序列化流
Object readObject() 从 ObjectInputStream 读取对象。
注意:如果一个类不实现Serializable接口无法把实例化,会报异常java.io.NotSerializableException
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。
如何实现序列化
让对象所属类的实现序列化接口。
package com.edu_07;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
public class ObjectInputStreamDemo {
public static void main(String[] args) throws Exception {
//创建反序列化流对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"));
//读取文件中存储的对象,以实现反序列化
//readObject()
Object object = ois.readObject();
System.out.println(object);
//关流
ois.close();
}
}
package com.edu_07;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
对象的序列化和反序列化
序列化流:把对象按照流一样的方式写到文件或者在网络中传输。
反序列化流:把文件或者网络中的流对象数据还原对象。
ObjectOutputStream:序列化流
writeObject(Object obj) 将指定的对象写入 ObjectOutputStream。
public class ObjectOutputStreamDemo {
public static void main(String[] args) throws IOException {
//创建序列化流对象
//public ObjectOutputStream(OutputStream out)
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("oos.txt"));
//创建一个学生对象,将学生对象写入文件中
Studnet s = new Studnet("刘德华", 50);
oos.writeObject(s);
// java.io.NotSerializableException
//类通过实现 java.io.Serializable 接口以启用其序列化功能
//关流
oos.close();
}
}
package com.edu_07;
import java.io.Serializable;
public class Studnet implements Serializable{
//实现这个接口不需要实现任何方法,这个接口说白了就是仅仅给Student类,打上了一个可以被序列化的标示
private String name;
private int 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;
}
public Studnet(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Studnet() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Studnet [name=" + name + ", age=" + age + "]";
}
}
- 第十五天2
- 第十五天
- 第十五天
- 第十五天
- 第十五天
- 第十五天
- 第十五天
- 第十五天
- 世界杯第十五天
- 第十五天 编写代码
- 第十五天:听课笔记
- 第十五天:总结
- 第十五天总结0409
- 星海第十五天
- 程序学习第十五天
- Java第十五天
- 第十五天(Ajax)
- 第十周第五天
- Python tab 命令补全,以及 vim 补全
- Spring AOP自定义注解解决日志和签名校验
- 云数据中心解决方案架构图
- 重写equal()为什么需要重写hashCode方法
- C++第六次上机作业
- 第十五天2
- 如何快速发现局域网里面的野路由(开着dhcp)
- String类的常用方法总结
- C++实验6
- c++实验6-数组操作
- PAT Basic 1001. 害死人不偿命的(3n+1)猜想 (15)(C语言实现)
- PAT Basic 1002. 写出这个数 (20)(C语言实现)
- PAT Basic 1003. 我要通过!(20)(C语言实现)
- PAT Basic 1004. 成绩排名 (20)(C语言实现)