DataInputStream和DataOutputStream基本用法和方法示例,序列化和反序列化
import java.io.Serializable; //该接口是一个“可序列化”的 ,没有任何方法,是一个标识接口,还有Cloneable /*
标识接口的作用:标识作用,JVM如果看到对象实现了某个标识接口,会对它特殊待遇,会给该类添加一个属性,static final long serialVersionUID=xxx,
最好是自己指定一个唯一的,这样不会产生类的兼容问题。
*/
public class User implements Serializable
{
String name; User(String name){
this.name = name;
}
//transient关键字修饰,表示该属性不参加序列化
transient int age; public String toString(){
return "hello " + name;
}
}
/*
对象 内存--->硬盘:序列化;硬盘--->内存:反序列化
java.io.ObjectOutputStream:序列化java对象到硬盘。Serial
java.io.ObjectInputStream:将硬盘中的数据反序列化到JVM内存。Deserial */
import java.io.*; public class ObjectOutputStreamTest01
{
public static void main(String[] args) throws Exception
{
User u = new User("张三"); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("temp06")); //写
oos.writeObject(u); oos.flush(); oos.close(); //****************ObjectInputStream
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("temp06")); Object o = ois.readObject(); System.out.println(o); ois.close();
}
}