---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
public class DataStream {
/*DataStream主要是用来操作基本数据类型的。
*对象的持久化/序列化/:利用一个能够长期保存对象介质将对象保存起来。
*ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,
*可以为应用程序提供对对象图形的持久存储。ObjectInputStream 用于恢复那些以前序列化的对象。
*其他用途包括使用套接字流在主机之间传递对象,或者用于编组和解组远程通信系统中的实参和形参。
*(对象本来在对内存中的,并且你面封装了一些特有数据,但是如果对象变为垃圾会也就是消失了,想要持久化出)
*1 有对象流读的必须用对象流写。
*2 writeInt 写4个八位。
*
*Object 和Data的共同之处都可以操作基本数据类型。
*/
public static void main(String[] args)throws Exception{
methed_3();
methed_4();
}
public static void methed_4()throws IOException
{
ObjectOutputStream oos =
new ObjectOutputStream(new FileOutputStream("SystemIO\\obj.txt"));
oos.writeObject(new Person("lisi0","399"));//注:本来这个Person对象是在对内存中的,但是当执行完
//这条语句后他就被序列化了/持久化,但是这个对象必须先实现java.io.Serializable接口,其中Serializable是一个
//标记借口(也就是没有方法的接口);
oos.close();
}
public static void methed_3()throws Exception
{
//出现Exception in thread "main" java.io.StreamCorruptedException: invalid stream head
//er: B8B9B9C9原因:就是"SystemIO\\obj.txt"不是一个对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("SystemIO\\obj.txt"));
Person p = (Person)ois.readObject();
System.out.println(p);
ois.close(); }
public static void sop(Object obj){
System.out.println(obj);
}
}
class Person_1 implements Serializable//实现这个标记接口(类通过实现 java.io.Serializable 接口以启用其序列化功能。
//未实现此接口的类将无法使其任何状态序列化或反序列化)
{ String name;
String age;
public Person(String name,String age){
this.age=age;
this.name=name;
}
public String toString(){
return name+":"+age;
}
}