对象的序列化和文件输入输出

1.为什么要序列化?
答:序列化的目的是:保存对象的状态;例如开发一款网游动作游戏,需要保存人物的经验值,武器,体力等;序列化的对象会保存实例变量的值;

2.怎样实现序列化?
答:要让类能够被序列化,需要implements Serializable接口

当对象被序列化之后,该对象引用的实例变量也会被序列化。如果在该对象里创建其他类的对象,则其他类也必须是被序列化的。


3.如果某实例变量不能或不应该被序列化,应该怎么办?
答:可以将它标记为transient(瞬时)的,序列化程序会将该变量跳过,且当解序列化的时候该变量的值为null或者是默认值。

序列化例子

import java.io.*;
public class Box implements Serializable{

private int width;
private int height;
省略get,set方法
public static void main(String []args){
Box myBox=new Box();
myBox.setWidth(30);
myBox.setHeight(40);
try{
FileOutputStream fs=new FileOutputStream("foo.txt");
ObjectOutputStream os=new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}

解序列化
FileInputStream fis=new FileInputStream("foo.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Object one=ois.readObject();
转换对象类型
MyBox myBox=(MyBox)one;
ois.close();

将字符串写入文本文件
FileWriter writer = new FileWriter("foo.txt");
writer.write("hello world");
writer.close();


BufferedWriter bw=new BufferedWriter(new FileWriter("boo.txt"));
用BufferedWriter可以暂存一些数据,等到满的时候再存入磁盘,减少对磁盘的操作次数

读取文本文件
FileReader reader=new FileReader("boo.txt");
BufferedReader br=new BufferedReader(reader);
while(br.readLine().haxNext()){
System.out.println("正在读取!")
}
br.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值