几乎所有的系统都需要通过获取配置/资源文件来方便配置系统
但怎样获取资源文件呢
java的应用通常把配置文件和工程中的其他class放在一起(如log4j),原因是可以方便的使用classLoader的 getResourceAsStream()方法获取资源(其实java内部就是这样来
load class的),下面是一个简单例子:
比如你把文件(abc.properties)放到com.yourcompany.common包里面,在确保classpath包括该包的情况
下就可以按下面的方法获取资源
ClassLoader cl = this.getClass().getClassLoader();
InputStream is = cl.getResourceAsStream("com/yourcompany/"+abc.properties)
进一不,如果abc.properties是一个标准的properties文件的话,比如其内容如下
messageA = Ok!
还可以这样获取配置信息
Properties props = new Properties();
props.load(is);
String messageA = props.getProperty("messageA ");
则messageA== "Ok"
当然properties也可以是XML格式,只要他符合http://java.sun.com/dtd/properties.dtd的规范并且包含
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">的DOCTYPE declaration,就可以用props.loadFromXML(InputSteam in)方法载入property
ps:property 也提供store()和storeToXML方法保存属性
关于classLoader也可以看看 《classloader相关基础知识》 这个文章
但怎样获取资源文件呢
java的应用通常把配置文件和工程中的其他class放在一起(如log4j),原因是可以方便的使用classLoader的 getResourceAsStream()方法获取资源(其实java内部就是这样来
load class的),下面是一个简单例子:
比如你把文件(abc.properties)放到com.yourcompany.common包里面,在确保classpath包括该包的情况
下就可以按下面的方法获取资源
ClassLoader cl = this.getClass().getClassLoader();
InputStream is = cl.getResourceAsStream("com/yourcompany/"+abc.properties)
进一不,如果abc.properties是一个标准的properties文件的话,比如其内容如下
messageA = Ok!
还可以这样获取配置信息
Properties props = new Properties();
props.load(is);
String messageA = props.getProperty("messageA ");
则messageA== "Ok"
当然properties也可以是XML格式,只要他符合http://java.sun.com/dtd/properties.dtd的规范并且包含
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">的DOCTYPE declaration,就可以用props.loadFromXML(InputSteam in)方法载入property
ps:property 也提供store()和storeToXML方法保存属性
关于classLoader也可以看看 《classloader相关基础知识》 这个文章
本文介绍了一种在Java应用中常见的资源文件加载方法,通过Classloader的getResourceAsStream()方法获取配置文件,并展示了如何读取properties文件及XML格式的properties文件。
4083

被折叠的 条评论
为什么被折叠?



