23.对象流

使用对象流来完成序列化和反序列化操作
ObjectOutputStream:通过writeObject方法做序列化操作
ObjectInputStream:通过readObject方法做反序列化操作

Exception in thread "main" java.io.NotSerializableException: iodemo02.User
此时报错:user类没有实现序列化接口,
做反序列化操作,必须存在字节码对象
调用类
package iodemo02;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {
    public static void main(String[] args) throws Exception {
        
        File file = new File("file/user.txt");
        
        //序列化
        test1(file);
        
        //反序列化
        test2(file);
    }

    private static void test2(File file) throws Exception{
        // TODO Auto-generated method stub
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
        
        User user = (User)in.readObject();
        
        System.out.println(user);
        
        in.close();
    }

    private static void test1(File file) throws Exception {
        // TODO Auto-generated method stub
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
        
        out.writeObject(new User("小明",18));
        
        out.close();
    }
    
    
}

对象类
package iodemo02;

import java.io.Serializable;

public class User implements Serializable{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    String name;
    int age;
    
    User(String name,int age){
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        
        return "User {"+"\nname:"+this.name+"\nage:"+this.age+"\n}";
    }
    
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容