java对象序列化

来源:互联网 发布:始祖鸟gamma lt知乎 编辑:程序博客网 时间:2024/06/06 02:39

有时候我们在开发项目的时候,对于数据的保存 我们通常是直接将数据保存到磁盘上面 ,但是这样操作起来非常的不方便 ,尤其是在大型的项目开发中。  对象的序列化

可以将对象以数据的形式存储到文件中;反之我们也可以从文件中加载一个对象 ,也叫反序列化。

对于多个数据的操作封装在一起,写入文件,在反序列化的时候我们只需要读取这个对象就可以了  ,我么就不必关心内部数据和方法了 。因为所有数据都包含在对象中。

对象的序列化规则 不同的语言 不一样 ,java中有java的规则。可以这样理解,他们将一个对象按某种规则转换成与机器指令对应的数据集,然后存储到文件中。反序列化的时候只需要按照规则解密,然后在内存中重构对象。


定义序列化的类:

import java.io.Serializable;/** * 定义可以序列化的类 */public class Atest implements Serializable{   public  String  a  ;   public Atest(String a){   this.a=a ;   }   public void show(){    System.out.println(a) ;   }}

序列化:

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class Day925 {    public static void main(String[] args) throws IOException, ClassNotFoundException {             //序列化        Atest  tem=new Atest("你好") ;        FileOutputStream fos=new FileOutputStream("F:\\a1.txt") ;        ObjectOutputStream oos= new  ObjectOutputStream(fos) ;        oos.writeObject(tem) ;    }}
反序列化:

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class Day925 {public static void main(String[] args) throws IOException, ClassNotFoundException {//发序列化FileInputStream fis=new FileInputStream("f:\\a1.txt") ;ObjectInputStream ois=new  ObjectInputStream(fis) ; Atest tem1 = (Atest)ois.readObject();tem1.show();}}


0 0