Java基礎 案例:對象的序列化與反序列化

對象的序列化與反序列化.

序列化:把Java對象轉換爲字節序列的過程.
反序列化:把字節序列恢復爲Java對象的過程.

將對象數據寫入文件並讀取案例:
工程創建com.test.serial 2個工程文件Goods.java / GoodsTest.java

Goods.java

package com.test.serial;
import java.io.Serializable;
public class Goods implements Serializable{
	private String goodsId;
	private String goodsName;
	private double price;
	//構造方法
	public Goods(String goodsId, String goodsName, double price) {
		this.goodsId = goodsId;
		this.goodsName = goodsName;
		this.price = price;
	}
	//getter setter
	public String getGoodsId() {
		return goodsId;
	}
	public void setGoodsId(String goodsId) {
		this.goodsId = goodsId;
	}
	public String getGoodsName() {
		return goodsName;
	}
	public void setGoodsName(String goodsName) {
		this.goodsName = goodsName;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	//toString
	@Override
	public String toString() {
		return "商品信息  [編號:" + goodsId + ", 名稱:" + goodsName + ", 價格:" + price + "]";
	}
}

GoodsTest.java

package com.test.serial;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class GoodsTest {
	public static void main(String[] args) {
		// 定義Goods類對象
		Goods goods1 = new Goods("gd0001","電腦",3000);
		try {
			//先創建文件對象
			FileOutputStream fos = new FileOutputStream("test1.txt");
			//文件對象輸出流 綁定 文件對象
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			//將對象信息寫入文件
			oos.writeObject(goods1);
			oos.flush();
			fos.close();
			oos.close();
			//去讀創建好的文件
			FileInputStream fis = new FileInputStream("test1.txt");
			ObjectInputStream ois = new ObjectInputStream(fis);
			try {
				Goods goods =(Goods) ois.readObject();//返回值是Object需要強制轉換
				System.out.println(goods); //直接輸出類的對象即可
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			fis.close();
			ois.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
發佈了45 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章