先提出下面两个问题:
问题1:采用什么方式来保存软件配置信息
问题2:怎么保存配置信息
下面就以上两个问题展开讲述:
1.保存配置文件的方法有很多种
A.将配置信息保存在注册表中(如果保存在注册表中对于java的跨平台性是一个破坏,因为不同操作系统的所谓注册表的存储方式是不同的)
B.将配置信息保存在任意类型的文件中,由于Java里有专门提供用于对配置文件读写的类库,所以我们在这里介绍properties类型的配置文件,
注意这里properties只是一个大家公认的配置文件后缀而已,没有什么特别的意义!
(当然还有其他方法,在这里主要介绍properties类型的配置文件)
2.对配置信息的操作无非就两种,从配置文件中读取信息,并将信息赋值给程序中的相应变量,还有就是当软件运行到某一个特定的时候,手动或自
动将软件中的某些信息写入到配置文件中,以便于以后的调用.为了方便的对properties类型的配置文件进行操作,在这里介绍一个Java提供的
一个类:Properties大家可以查看API以了解此类的详细信息.
对于最简单的应用,这里只用到Properties中的三个方法:
1.void load(InputStream inStream)从输入流中读取属性列表(键和元素对)。这个inStream可以有多种取得的方法,这里只介绍一种通过
ClassName.class.getClassLoader().getResourceAsStream()来取得properties文件.通常:ClassName.class.getClassLoader ().getResourceAsStream(““)取得的是
WEB-INF的下级目录,比如ClassName.class.getClassLoader().getResourceAsStream(“db.properties“).在Tomcat中,可以通过增加”../”来取得上层目录
,即WEB-INF目录,这样就可以把properties放在WEB-INF中统一管理。但是WLS不识别”../”。另外一种土办法,就是不返回classLoader,
直接ClassName.class.getResourceAsStream()。然后通过多个”../”(小于6个)来返回相应的上级目录。当然,如果类扩展了HttpServlet,可以通过
getServletContext().getRealPath("/")来取得Web部署目录的绝对路径。
2. String getProperty(String key)用指定的键在此属性列表中搜索属性。
3. Object setProperty(String key, String value)调用 Hashtable 的方法 put。
4. void store(OutputStream out, String comments) 以适合使用 load(InputStream) 方法加载到Properties 表中的格式,将此Properties 表中的属性列表(键和元素对)
写入输出流。
在读之前必须要用1方法得到输入流,在写之前必须先建一个到配置文件的输出流作为4的参数,写完后用4方法
处于Singleton设计模式的考虑,建议把整个对配置文件的操作写成一个类,并且将所有变量方法全部设置为静态
posted on 2008-12-23 15:27
FINDER 阅读(2197)
评论(0) 编辑 收藏 所属分类:
J2SE