A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘郑瑞 中级黑马   /  2013-1-18 23:04  /  1466 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     在Windows开发中,可以使用*.ini文件来保存程序的状态或设置等数据,并且一般都提供了操作ini文件的API。但在Java中怎么实现类似的功能呢?
比如,在程序中,我们需要保存一个窗口的位置,让程序在下次启动的时候,仍然保持在上一次关闭的时候的位置,或者程序需要将数据库连接的设置保存下来。
其中一种方法就是使用对象序列化存储。首先,简单解释一下序列化的含义:在Java程序中,对象是存在于内存中的,序列化就是将这个对象在内存中的形态变成字节流,然后输入到一个文件中,这样就将一个对象固定下来,不会随程序的关闭而消失。我们建立一个可以序列化的类,注意,在Java中,并不是每个类都可以实现序列化的,要实现java.io.Serializable接口的类才可以序列化。
public class ProgramSave implements java.io.Serializable{

  private int height;
  private int width;
  private int left;
  private int top;
  public ProgramSave(){
    height=200;
    width=200;
    left=0;
    top=0;
}
public int getHeight(){
  return height;
}
public void setHeight(int hei){
    height=hei;
}
…..
   程序中用4个属性来保存程序的状态,并且声明多个方法来保存和获取属性。上面的程序只写了一个获取和保存的方法,其他的类似。
   当程序退出的时候,在退出前,我们要先保存程序的状态,将下面的方法添加到程序退出前,执行完下面的代码后在退出程序。
   //创建一个可以序列化的对象
   ProgramSave  save = new ProgramSave();
save.setHeight(窗口的高);
…..
   这样将程序的状态保存到save这个对象中,但是,现在程序的状态只是保存在内存中,因为sava这个对象现在仍然是在内存中的。下面创建一个文件,并把save对象保存到这个文件中。
    //创建文件对象
       File file = new File(“mysave.save”);
file.createNewFile();
      //获取文件的字节流对象
FileOutputStream bytetOut = new FileOutputStream(file);
ObjectOutputStream outer = new ObjectOutputStream(bytetOut)

//将save对象写入
       outer.writeObject(save);
    outer.flush();
outer.close();

到此,save对象,就被保存到文件中了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马