java 对象序列化与反序列化
2021-06-10 06:04
标签:rgs stat 持久 get null 序列化 stack obj users 当两个进程远程通信时,彼此可以发送各种类型的数据。 无论是何种类型的数据,都 会以二进制序列的形式在网络上传送。比如,我们可以通过 http 协议发送字符串信息;我 们也可以在网络上直接发送 Java 对象。发送方需要把这个 Java 对象转换为字节序列,才能 在网络上传送;接收方则需要把字节序列再恢复为 Java 对象才能正常读取。 ObjectOutputStream 可以将一个内存中的 Java 对象通过序列化的方式写入到磁盘的文 件中。被序列化的对象必须要实现 Serializable 序列化接口,否则会抛出异常。 java 对象序列化与反序列化 标签:rgs stat 持久 get null 序列化 stack obj users 原文地址:https://www.cnblogs.com/freebule/p/14462647.html序列化和反序列化是什么
把 Java 对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为 Java 对象的 过程称为对象的反序列化。对象序列化的作用有如下两种:
序列化涉及的类和接口
只有实现了 Serializable 接口的类的对象才能被序列化。Serializable 接口是一个空接口, 只起到标记作用。
操作对象
将对象序列化到文件
定义实体类对象
package com.io;
import java.io.Serializable;
public class Users implements Serializable {
private int userId;
private String userName;
private String userAge;
public Users() {
}
public Users(int userId, String userName, String userAge) {
this.userId = userId;
this.userName = userName;
this.userAge = userAge;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserAge() {
return userAge;
}
public void setUserAge(String userAge) {
this.userAge = userAge;
}
}
对象序列化
package com.io;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
/**
* 对象序列化的过程:就是将对象转换成字节
*/
public class ObjectOutputStreamObjectTypeDemo {
public static void main(String[] args) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("/Users/pain_/Desktop/b/c/b")));
Users user = new Users(1, "kevin", "18");
oos.writeObject(user);
oos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (oos != null) {
oos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
对象反序列化
package com.io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
/**
* 对象反序列化:字节转对象
*/
public class ObjectInputStreamObjectTypeDemo {
public static void main(String[] args) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream("/Users/pain_/Desktop/b/c/b")));
Users users = (Users) ois.readObject();
System.out.println("Id:" + users.getUserId() + "\t" + "姓名:" + users.getUserName() + "\t" + "年龄" + users.getUserAge());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ois != null) {
ois.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}