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();
答:序列化的目的是:保存对象的状态;例如开发一款网游动作游戏,需要保存人物的经验值,武器,体力等;序列化的对象会保存实例变量的值;
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();