首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 新手入门 >> 基础入门 >> 正文

保存Java程序状态及设置的对象序列化

    在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对象保存到这个文件中。
    
    现在仍然是在内存中的。下面创建一个文件,并把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对象,就被保存到文件中了。

  在程序启动的时候,相反,我们要将mysave.save中的对象重新载入到内存中,然后获取其中保存的height等值,再调整窗口的位置。

  在窗口对象初始化的时候,载入对象。

  //获取文件对象   File f=new File(“mysave.save”);   FileInputStream byteOut = new FileInputStream(f);   ObjectInputStream out = new ObjectInputStream(byteOut);   //将文件对象中的字节流读出来,并保存在内存中的mySet对象中   SystemSave mySet = (SystemSave) out.readObject();   out.close();   byteOut.close();

 
    后面就可以通过mySet.getHeight()等方法来获取保存的数据,然后再将窗口的高等属性设置为这个获取的值。

  2.通过properties文件来保存。Properties文件类似于windows编程中的ini文件,Java中也提供了API来操作properties文件。

【责编:Zenghui】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航