簡單實用的有關序列化與反序化的小例子

oos.flush

packagejavabasic;

importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.util.Date;

publicclassTestq{
publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException{
test();
}
publicstaticvoidtest()throwsIOException,ClassNotFoundException{

//序列化:將對象持久化保存到外部文件中

Peoplep1=newPeople(1001,"張1");
Peoplep2=newPeople(1002,"張2");
Peoplep3=newPeople(1003,"張3");
//序列化對象必須實現Serializable接口

//對象序列話主要用到兩種流和write方法:
//1:OutputStreamos=newOutputSream("filepath"):創建與相應外部文件之間的字節輸出流
//2:ObjectOutputStreamoos=newObjectOutputStream(os):利用OutputStream創建對象輸出流,將對象寫到外部文件中
//3:oos.writeOject():將對象寫到外部文件中eg:類對象,newString(),newDate()對象等
//4:oos.writeInt():基本數據類型寫到外部文件中

//對象反序列畫即對象序列化的流向相反過程也主要用到兩種流和read方法
//1:InputStreamis=newInputStream("filepath");
//2:ObjectInputStreamois=newObjectInputStream(is);
//3:oos.readOject();//注意強制類型轉換
//4:oos.readInt();



//例子:
//對象序列化
OutputStreamio=newFileOutputStream("F:\\strong\\JavaseReview\\file\\studb.file");
ObjectOutputStreamoos=newObjectOutputStream(io);
//寫入基本數據類型數值,對象引用
oos.writeInt(1001);//
oos.writeObject(p1);
oos.writeInt(1002);
oos.writeObject(p2);
oos.writeObject(newDate());
oos.flush();//注意一定要刷新一下,將數據在關閉之前都寫到外部文件中
oos.close();

//對象反序列化
InputStreamis=newFileInputStream("F:\\strong\\JavaseReview\\file\\studb.file");
ObjectInputStreamois=newObjectInputStream(is);
intid1=ois.readInt();
Peoplepeo1=(People)ois.readObject();
System.out.println(id1+""+peo1.getName());
intid2=ois.readInt();
Peoplepeo2=(People)ois.readObject();
System.out.println(id2+""+peo2.getName());
Datedate=(Date)ois.readObject();
System.out.println(date);
ois.close();
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章