java序列化和反序列化

java

序列化概念:java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据,有关对象的类型的信息和存储在对象中数据的类型。

反序列化概念:把字节恢复为对象的过程叫反序列化。

类ObjectInputStream和ObjectOutputStream包含了序列化和反序列化对象的方法。

一个类要想序列化成功,必须满足两个条件:

该类必须实现java.io.SeriaAlizable;

该类的所有属性必须是可序列化的,如果一个属性不是可序列化的,则该属性必须注明是短暂的。

示例:

SerializeDemo.java文件:用ObjectOnputStream实现序列化

import java.io.*;

public class SerializerDemo {

public static void main(String [] args)

{

Employee e = new Employee();

e.name = "Ali";

e.address = "yi";

e.SSN = 123456;

e.number = 11545;

try {

//文件输出流(FileOutputStream):FileOutputStream用于写入原始字节流,如图像数据。当序列化一个对象到文件时, 按照 Java 的标准约定是给文件一个 .ser 扩展名

FileOutputStream fileOut = new FileOutputStream("C:/Users/July/Desktop/test/1.ser");

//ObjectOutputStream 类用来序列化一个对象

ObjectOutputStream out = new ObjectOutputStream(fileOut);

out.writeObject(e);

out.close();

fileOut.close();

System.out.printf("成功序列化");

}catch(IOException i)

{

i.printStackTrace();

}

}

}

 employee.java文件:

import java.io.Serializable;

//创建接口

class Employee implements Serializable{

public String name;

public String address;

public transient int SSN;

public int number;

}

反序列化:用ObjectInputStream实现反序列化

import java.io.*;

public class DeserializeDemo {

public static void main(String[] args) throws ClassNotFoundException {

Employee e = null;

try {

FileInputStream fileIn = new FileInputStream("C:/Users/July/Desktop/test/1.ser");

ObjectInputStream in = new ObjectInputStream(fileIn);

e = (Employee) in.readObject();

in.close();

fileIn.close();

}catch(IOException i)

{

i.printStackTrace();

return;

}catch(ClassNotFoundException c)

{

System.out.println("Emplyoee类没有发现");

c.printStackTrace();

}

System.out.println("执行。。。。。");

System .out .println("Name:" + e.name );

System .out .println("Address:" + e.address );

System .out .println("SSN:" + e.SSN );

System .out .println("Number:" + e.number );

}

}

以上是 java序列化和反序列化 的全部内容, 来源链接: utcz.com/z/394765.html

回到顶部