java IO序列化—纯个人见解
来源:互联网 发布:java vr开发入门 编辑:程序博客网 时间:2024/05/19 02:40
引入序列化:
计算机对于数据的传输是以字节进行传输的,但是在java中对于基本类型可以直接通过getBytes()方法进行转码传输,但是对于对象却不可以直接转为字节,所以需要引入序列化的接口,可以将对象进行传输操作。
序列化概念:
序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化与反序列化的处理:
JAVA中对于对象的状态序列化和反序列化,提供了一对操作API,ObjectInputStream 和ObjectOutputStream 这两个可以将可序列化的对象的状态序列化到文件中保存或者传输。
可序列化的对象,这个类必须是实现了Serializable接口的类,而且其成员变量也必须是可序列化的。public class FilePathDemo implements Serializable{
}
一个简单的序列化例子说明一切(看注释,注释为要点)
package serializable;import java.io.Serializable;//定义一个对象的类,实现序列化接口Serializable,该接口中没有需要覆写的抽象方法,直接实现即可public class StudentInfo implements Serializable{private String name;private int age;public StudentInfo() {}public StudentInfo(String name, int age) {super();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;}@Overridepublic String toString() {return "StudentInfo [name=" + name + ", age=" + age + "]";}}实现序列化和反序列化
package serializable;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {// 创建一个空白的文件File file = new File("F:" + File.separator + "test.txt");file.createNewFile();// 定义一个对象StudentInfo student = new StudentInfo("zhangsan", 19);// 序列化,将对象传输到指定的文件中FileOutputStream out = new FileOutputStream(file);ObjectOutputStream outputStream = new ObjectOutputStream(out);outputStream.writeObject(student);outputStream.flush();outputStream.close();out.close();// 反序列化,从指定的位置文件中获取对象,在控制台输出FileInputStream fis = new FileInputStream(file);ObjectInputStream in = new ObjectInputStream(fis);StudentInfo studentInfo = (StudentInfo) in.readObject();System.out.println(studentInfo);in.close();fis.close();}}
结果:在序列化结束的时候会在生成的空白文件中存放我们放入的对象信息,但是由于记事本和eclipse的序列化效果不一样,所以在文件中会乱码,但是同样是成功的效果,反序列化后会从文件中得到我们想要的对象,需要强转一下输出即可。
文件中输出序列化的结果:
eclipse的控制台中输出反序列化结果:
序列化其他总结:
父类如果是可序列化的,子类也是可序列化的;类的成员变量全部是可序列化的,类才能被正常可序列化。
阅读全文
1 0
- java IO序列化—纯个人见解
- JAVA 接口化编程个人见解
- java UDP 个人见解
- Java ClassLoader个人见解
- Java比较器Comparator接口和Comparable<泛型>接口的纯个人见解
- epoll所属IO模型的个人 见解
- java io+序列化
- Java IO -- 序列化
- 对于java的个人见解
- java线程创建个人见解
- 序列化:java.io.Serializable
- java.io.Serializable序列化
- 序列化:java.io.Serializable
- 序列化:java.io.Serializable
- 序列化java.io.Serializable
- 序列化:java.io.Serializable
- java.io.Serializable序列化
- java.io.InvalidClassException序列化
- Android 一天搞定 NDK和JNI编程 3分钟学会写NDK实例
- 关于残差网络Resnet的理解
- HDU 3068 2017 Multi-University Training Contest
- _CrtIsValidHeapPointer出错的解决方法
- FileReader图片预览上传
- java IO序列化—纯个人见解
- [bzoj4241]历史研究 回滚莫队
- Python中的SyntaxError错误之can't decode bytes in...
- Nginx定义域名访问
- GET,POST,PUT,DELETE的区别
- 决策树算法的可视化表达
- 向上类型转换和向下类型转换
- 各种开源协议说明MIT,BSD,GPL
- 移动App后台Java开发银联支付后台接口