首页 / JAVA / Java 序列化&反序列化基础
Java 序列化&反序列化基础
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 序列化&反序列化基础,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3190字,纯文字阅读大概需要5分钟。
内容图文
![Java 序列化&反序列化基础](/upload/InfoBanner/zyjiaocheng/615/66c8abfde9c04bf181663a6a8655a1a6.jpg)
序列化和反序列化
简述:
Java序列化是指把Java对象转换为字节序列的过程,即把一个对象变为二进制的数据流的一种方法,通过序列化可以方便地实现对象的传输和存储;Java反序列化是指把字节序列恢复为Java对象的过程。
student.java:
package com.wu.Bean;
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = -4307074831333148448L;
private String name;
private int age;
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String toString() {
return "姓名:"+name+",年龄:"+age;
}
}
StudentSerializable.java:
package com.wu.SerializableDemo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import com.wu.Bean.Student;
public class StudentSerializable {
private static final String PATH = "C:"+File.separator+"Users"+File.separator+"Administrator"
+ File.separator+"Desktop"+File.separator+"代码集合"+File.separator+"Java"+File.separator+"studentserializable.txt";
public StudentSerializable(String name,Integer age) {
Student s = new Student(name,age);
File file = new File(PATH);
if(!file.exists()) {
try {
file.createNewFile();
}catch(IOException e) {
e.printStackTrace();
}
}
// student实例序列化过程
try {
FileOutputStream fos = new FileOutputStream(file); //创建文件输出流对象
ObjectOutputStream obj = new ObjectOutputStream(fos); // 将文件输出流对象转化为对象输出流对象
obj.writeObject(s); // 将student实例写入对象输出流
obj.flush(); // 刷新缓冲区
obj.close(); // 关闭对象输出流对象
fos.close(); // 关闭文件输出流对象
}catch(IOException e) {
e.printStackTrace();
}
}
}
StudentDeserializable.java:
package com.wu.SerializableDemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import com.wu.Bean.Student;
public class StudentDeserializable {
private static final String PATH = "C:"+File.separator+"Users"+File.separator+"Administrator"
+ File.separator+"Desktop"+File.separator+"代码集合"+File.separator+"Java"+File.separator+"studentserializable.txt";
public StudentDeserializable() {
File file = new File(PATH);
if(!file.exists()) {
try {
file.createNewFile();
}catch(IOException e) {
e.printStackTrace();
}
}
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream obj = new ObjectInputStream(fis);
Student s = (Student) obj.readObject();
System.out.println(s);
obj.close();
fis.close();
}catch(IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
TestDemo.java:
package com.wu.SerializableDemo;
import org.junit.Test;
public class TestDemo {
@Test
public void test() {
// 序列化测试
new StudentSerializable("张三",20);
// 反序列化测试
new StudentDeserializable();
}
}
此时在相应的目录下会生成一个txt文件,这里面的内容和class文件的一样:
结果:
transient关键字
为了保证对象序列化的高效传输,就需要防止一些不必要成员属性的序列化处理
// 对student类的age属性添加transient关键字
private static final long serialVersionUID = -4307074831333148448L;
private String name; // 此属性可被序列化
private transient int age; // 此属性不被序列化
结果:
内容总结
以上是互联网集市为您收集整理的Java 序列化&反序列化基础全部内容,希望文章能够帮你解决Java 序列化&反序列化基础所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。