java中處處體現著簡單的程序設計風格,序列化作為最常用的功能之一,在java中的設計尤為“簡單”。在objectinputstream 和objectoutputstream的幫助下,我們可以輕松的實現序列化。
  只要我們的class 實現了java.io.serializable接口,就可以利用objectoutputstream的writeobject()方法將一個對象序列化;利用objectinputstream的readobject()方法,可以返回讀出的object對象。serializable接口不需要我們實現任何方法。
  以下是一個例子,它能給我們一個感性的認識:
  serial實現了就java.io.serializable接口,是需要序列化的類。我們首先構造一個serial的對象serial1然后將其保存(序列化)在一個文件中,而后再將其讀出(反序列化),并打印其內容。
  package stream;
/**
* @author favo yang
*/
import java.io.*;
public class serial implements serializable {
 int company_id;
 string company_addr;
 boolean company_flag;
 public serial(){}//不同于c++,沒有也可以
 public serial(int company_id,string company_addr,boolean company_flag) {
  this.company_id=company_id;
  this.company_addr=company_addr;
  this.company_flag=company_flag;
 }
 public static void main(string[] args) {
  serial serial1 = new serial(752,"dayer street #5 building 02-287",false);//構造一個新的對象
  fileinputstream in=null;
  fileoutputstream out=null;
  objectinputstream oin=null;
  objectoutputstream oout=null;
  try {
   out = new fileoutputstream("5.txt");
   oout = new objectoutputstream(out);
   serial1.serialize(oout);//序列化
   oout.close();
   oout=null;
   in = new fileinputstream("5.txt");
   oin = new objectinputstream(in);
   serial serial2 = serial.deserialize(oin);//反序列化
   system.out.println(serial2);//打印結果
  } catch (exception ex){
   ex.printstacktrace();
  } finally{
   try {
    if (in != null) {
     in.close();
    }
    if (oin != null) {
     oin.close();
    }
    if (out != null) {
     out.close();
    }
    if (oout != null) {
     oout.close();
    }
   } catch (ioexception ex1) {
    ex1.printstacktrace();
   }
  }
 }
 /**
  * deserialize
 */
 public static serial deserialize(objectinputstream oin) throws exception{
  serial s=(serial)oin.readobject();
  return s;
 }
 public string tostring() {
  return "data: "+company_id+" "+company_addr+" "+company_flag;
 }
 /**
 * serialize
 */
 public void serialize(objectoutputstream oout) throws exception{
  oout.writeobject(this);
 }
}
新聞熱點
疑難解答