|
以前年轻的时候,总喜欢在代码中把参数的值写死,改一遍跑一遍,可移植性太糟糕了。自从用了Properties类之后,省事了,代码也规范了一点了。
也就是将常用的,且经常需要修改的参数放置在xx.properties文件中,利用Java中提供的Properties类读取文件中的参数值,从而避免多次在代码中修改参数的值,一劳永逸。
Properties其实是继承自HashTable,所以用起来也很简单,提供的操作主要有:
- load(inputStream) : 加载配置文件
- store(outputStream,comment):将新生成的Properties对象写出到文件中去,comment是添加说明性的文字;
- getProperty(name):获取某个属性的值;
- setProperty(name,value):设置某个属性的值;这个属性可以事先不存在
- putProperty(name,value):新增一个属性值
复制代码
下面写一个example,几分钟就学会了,很简单有木有:
- package PropertiesTest;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.Properties;
- /**
- *
- * @author wangjj
- *
- * Jan 7, 2015
- */
- public class TestPropertiesClass {
- public static Properties properties;
- public TestPropertiesClass(String propertiesFile) throws Exception {
- properties = new Properties();
- // properties文件的格式是: #comment,argument=value
- FileInputStream input = new FileInputStream(new File(propertiesFile));
- // 从input stream中读取数据
- properties.load(input);
- }
- /**
- * 测试properties中提供的方法:get,set,store,put
- *
- * @throws IOException
- * @throws FileNotFoundException
- */
- public void run(String outputProperty) throws FileNotFoundException,
- IOException {
- // read properties
- String firstname = properties.getProperty("firstname" );
- String hobby = properties.getProperty("hobby" );
- System. out.println("firstName: " + firstname);
- System. out.println("hobby:" + hobby);
- // set existed property
- properties.setProperty("firstname" , "jing" );
- firstname = properties.getProperty("firstname" );
- System. out.println("changed firstName:" + firstname);
- // set non-existed property
- properties.setProperty("hello" , "world" );
- System. out.println("hello :" + properties.getProperty("hello" ));
- // put non-existed property
- properties.put("newProperty" , "newValue" );
- System. out.println("New property :"
- + properties.getProperty("newProperty" ));
- properties.store(new FileOutputStream(new File(outputProperty)),
- "outputProperty");
- }
- public static void main(String[] args) throws Exception {
- String properFile = "conf/test.properties";
- TestPropertiesClass testProperties = new TestPropertiesClass(properFile);
- String outputProperty = "conf/testNew.properties" ;
- testProperties.run(outputProperty);
- }
- }
复制代码 |
|