java 类的序列化_学Java· 对象序列化· Java终章

对象序列化

序列化:把Java对象转换成字节序列的过程

反序列化:把字节序列恢复成Java对象的过程

步骤:

1.创建一个类,继承Serializable

2.创建对象

3.将对象写入文件

4.从文件读取对象信息

对象的读写涉及两个类:

对象输入流ObjectInputStream

对象输出流ObjectOutputStream

实战

写一个商品类,将类的信息保存在文件中,并从文件中读取

public class Goods implements Serializable {

private String goodsId;

private String goodsName;

private double price;

public Goods(String goodsId, String goodsName, double price) {

super();

this.goodsId = goodsId;

this.goodsName = goodsName;

this.price = price;

}

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;

}

@Override

public String toString() {

return "商品信息 [编号:" + goodsId + ", 名称:" + goodsName + ", 价格:" + price + "]";

}

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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 Test {

public static void main(String[] args) {

// 定义Goods类对象

Goods goods1 = new Goods("gd001", "电脑", 4000);

try {

// 输出流

FileOutputStream fos = new FileOutputStream("C:\\test\\goods.txt");

ObjectOutputStream oos = new ObjectOutputStream(fos);

// 输入流

FileInputStream fis = new FileInputStream("C:\\test\\goods.txt");

ObjectInputStream ois = new ObjectInputStream(fis);

// 将Goods对象信息写入文件

oos.writeObject(goods1);

oos.writeBoolean(true);// 写入一个布尔类型的数据

oos.flush();

// 将文件的内容读取到控制台

try {

Goods rgoods1 = (Goods) ois.readObject();

System.out.println(rgoods1);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(ois.readBoolean());// 注意读写顺序,否则报EOF错误

fos.close();

oos.close();

fis.close();

ois.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO: handle exception

}

}

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

商品信息 [编号:gd001, 名称:电脑, 价格:4000.0]

true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值