程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [javaSE] IO流(對象序列化),javase序列化

[javaSE] IO流(對象序列化),javase序列化

編輯:JAVA綜合教程

[javaSE] IO流(對象序列化),javase序列化


寫入

獲取ObjectOutputStream對象,new出來,構造參數:FileOutputStream對象目標文件

調用ObjectOutputStream對象的writeObject()方法,參數:要保存的對象

調用ObjectOutputStream對象的close()方法,關閉流

 

此時會報異常,NotSerialzeableException,是因為目標類沒有實現Serializable接口,這個接口沒有方法,稱為標記接口,會在改變類之後,生成新的序列號,保存的文件讀取時會顯示錯誤信息InvalidClassException

 

讀取

獲取ObjectInputStream對象,new出來,構造參數:FileInputStream對象目標文件

調用ObjectInputStream對象的readObject()方法,得到保存的數據

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public class ObjectStreamDemo {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        writeObj();
        readObj();
    }
    /**
     * 保存對象
     * @throws IOException 
     * @throws FileNotFoundException 
     */
    public static void writeObj() throws Exception{
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("person.object"));
        oos.writeObject(new Person("taoshihan",100));
    }
    
    public static void readObj() throws Exception{
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("person.object"));
        Person person=(Person) ois.readObject();
        System.out.println(person);//輸出 taoshihan:100
    }
}
/**
 * 自定義的類
 * @author taoshihan
 *
 */
class Person implements Serializable{
    private String name;
    private int age;
    public Person(String name,int age) {
        this.name=name;
        this.age=age;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return name+":"+age;
    }
}

 

PHP版:

<?php
class Person{
    private $name;
    private $age;
    public function __construct($name,$age){
        $this->name=$name;
        $this->age=$age;
    }
    public function toString(){
        return $this->name.":".$this->age;
    }
}

$personObj=serialize(new Person("taoshihan",100));
echo $personObj;// 輸出 O:6:"Person":2:{s:12:"Personname";s:9:"taoshihan";s:11:"Personage";i:100;}
$obj=unserialize($personObj);
echo $obj->toString();//輸出 taoshihan:100

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved