在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文件。
URl收藏 http://www.qqread.com/java/2008/02/v395848.html相关专题
- Java环境安装配置 (5640篇文章)
- Java编程开发手册 (8291篇文章)
- Java对象 (151篇文章)
- J2SE综合:浅谈java程序发布之 jre 篇 (11次浏览)
- JAVA代码中使用魔法数值 (8次浏览)
- Hibernate缓存管理 (6次浏览)
- JAVA代码应该流畅和结构化 (5次浏览)
- Java JVM设置对性能的影响 (4次浏览)
- 开发框架:深入了解 Struts Validator (3次浏览)
- Java中的通信机制及与C/C API的集成 (1次浏览)
- 用Hibernate实现领域对象的自定义字段 (1次浏览)
- Java语言入门 简述Java语言回收机制 (0次浏览)
- 2008年Java开发者最迫切的五个期望 (0次浏览)



