使用对象流来完成序列化和反序列化操作
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}";
}
}