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

   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();

   




你可能感兴趣的:(序列化,输入与输出)