Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>JAVA基础>>保存Java程序状态及设置之对象序列化
保存Java程序状态及设置之对象序列化
2005-09-07   来源:本站原创  作者:郝从平

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对象,就被保存到文件中了。

 

 

在程序启动的时候,相反,我们要将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文件。

 

本文根据作者自己的心得所写,难免有疏忽遗漏,欢迎对文章进行批评指正。作者郝从平 Email:cqhcp@126.com

 

    本章演示用对象序列化来存储,其他方法请看下一章。
  --相关文章--
· J2EE全面介绍(二) (2007-04-13)
· 项目经验二则:读取war包中的文件及Ant使用中的OutOfMemoryError解决 (2007-04-13)
· 走向J2EE,漫长的道路 (2007-04-13)
· 步入J2EE架构和过程(2) (2007-04-13)
· 步入J2EE架构和过程(1) (2007-04-13)
· 方兴未艾的CORBA (2007-04-13)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接