机器学习和生物信息学实验室联盟

标题: 5分钟教你学会Java properties [打印本页]

作者: wangjingjing    时间: 2015-1-7 20:12
标题: 5分钟教你学会Java properties
       以前年轻的时候,总喜欢在代码中把参数的值写死,改一遍跑一遍,可移植性太糟糕了。自从用了Properties类之后,省事了,代码也规范了一点了。
也就是将常用的,且经常需要修改的参数放置在xx.properties文件中,利用Java中提供的Properties类读取文件中的参数值,从而避免多次在代码中修改参数的值,一劳永逸。

Properties其实是继承自HashTable,所以用起来也很简单,提供的操作主要有:

  1. load(inputStream) : 加载配置文件
  2. store(outputStream,comment):将新生成的Properties对象写出到文件中去,comment是添加说明性的文字;
  3. getProperty(name):获取某个属性的值;
  4. setProperty(name,value):设置某个属性的值;这个属性可以事先不存在
  5. putProperty(name,value):新增一个属性值
复制代码


下面写一个example,几分钟就学会了,很简单有木有:
  1. package PropertiesTest;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.Properties;

  8. /**
  9. *
  10. * @author wangjj
  11. *
  12. *         Jan 7, 2015
  13. */
  14. public class TestPropertiesClass {

  15.      public static Properties properties;

  16.      public TestPropertiesClass(String propertiesFile) throws Exception {

  17.            properties = new Properties();

  18.            // properties文件的格式是: #comment,argument=value
  19.           FileInputStream input = new FileInputStream(new File(propertiesFile));

  20.            // 从input stream中读取数据
  21.            properties.load(input);
  22.      }

  23.      /**
  24.       * 测试properties中提供的方法:get,set,store,put
  25.       *
  26.       * @throws IOException
  27.       * @throws FileNotFoundException
  28.       */
  29.      public void run(String outputProperty) throws FileNotFoundException,
  30.               IOException {

  31.            // read properties
  32.           String firstname = properties.getProperty("firstname" );
  33.           String hobby = properties.getProperty("hobby" );
  34.           System. out.println("firstName: " + firstname);
  35.           System. out.println("hobby:" + hobby);

  36.            // set existed property
  37.            properties.setProperty("firstname" , "jing" );
  38.           firstname = properties.getProperty("firstname" );
  39.           System. out.println("changed firstName:" + firstname);

  40.            // set non-existed property
  41.            properties.setProperty("hello" , "world" );
  42.           System. out.println("hello :" + properties.getProperty("hello" ));

  43.            // put non-existed property
  44.            properties.put("newProperty" , "newValue" );
  45.           System. out.println("New property :"
  46.                    + properties.getProperty("newProperty" ));

  47.            properties.store(new FileOutputStream(new File(outputProperty)),
  48.                     "outputProperty");
  49.      }

  50.      public static void main(String[] args) throws Exception {
  51.           String properFile = "conf/test.properties";
  52.           TestPropertiesClass testProperties = new TestPropertiesClass(properFile);
  53.           String outputProperty = "conf/testNew.properties" ;
  54.           testProperties.run(outputProperty);
  55.      }
  56. }
复制代码

作者: 花思谢    时间: 2015-1-8 09:59
好顶赞
作者: zouquan    时间: 2015-1-8 11:04
超级赞哦,大家都要学一下。

王JJ,女生中的战斗J!
作者: wangjingjing    时间: 2015-1-8 13:07
zouquan 发表于 2015-1-8 11:04
超级赞哦,大家都要学一下。

王JJ,女生中的战斗J!

老板求不黑,会嫁不出去的
作者: 小疯纸一枚    时间: 2015-1-8 13:27
服!!!!!!!!!!!!!!
作者: Mr.Vege求好运    时间: 2015-1-9 16:54
师姐越来越高大上了啊=。=
作者: wangjingjing    时间: 2015-1-9 21:09
Mr.Vege求好运 发表于 2015-1-9 16:54
师姐越来越高大上了啊=。=

能不黑姐吗?只是觉得这东西挺实用的,所以就贴出来小伙伴们一起用喽
作者: guojiasheng    时间: 2015-1-17 22:56
试了一下,果然nice,师姐,接着跟帖学习。
作者: wangjingjing    时间: 2015-1-18 16:37
guojiasheng 发表于 2015-1-17 22:56
试了一下,果然nice,师姐,接着跟帖学习。

嗯嗯,姐这个乡下人进城,学到的好用的东西会跟大家分享哈。




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2