Java中的序列化和反序列化

首先我先解释下什么是序列化?什么是反序列化

Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。

提到序列化,不得不提serializable

这个接口中什么都没有,是空的,但是要想实现序列化,必须实现这个接口,只要是要想对象在网络中进行传输,必须实现这个接口

Serializable是一个标示接口,没有任何方法,表名你的类是可以序列化成字节。或保存或网络传输的

什么都不说了  直接上代码

    private static void xulie(Student stu){
         File f = new File("/Users/wangwei/abc/456.txt");// 保存两个对象的文件对象
            try {
                FileOutputStream fos = new FileOutputStream(f);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                System.out.println("没有被序列化时的对象如下:");
                
                oos.writeObject(stu);
                System.out.println("序列化成功!!");
                oos.flush();
                fos.close();
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    private static Student  fan(){
        Student stu=null;
//        /Users/zhaochang/abc/
         File f = new File("/Users/wangwei/abc/456.txt");
         try {
                FileInputStream fis = new FileInputStream(f);
                ObjectInputStream ois = new ObjectInputStream(fis);
                stu = (Student) ois.readObject();
                System.out.println(stu);  
                fis.close();
                ois.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        return stu;
        
    }

就是一个简单的sutdent 用于保存在那个456.txt文件中,切记,这个student是实现了那个serializable接口的,要不然不能实现序列化的

这段代码就是实现了序列化,保存在/user/wangwei/abc/456/txt中,中间用到了FileOutputstream和ObjectOutputstream,然后调用oos的write把对象放在了那个文件中了

反序列化就是从那个文件中拿到保存的对象信息,返回一个student对象,下面这个是打印结果,同鞋们可试下,验证下







猜你喜欢

转载自blog.csdn.net/qq_29729601/article/details/70188147