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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2847|回复: 8
打印 上一主题 下一主题

5分钟教你学会Java properties

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-7 20:12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       以前年轻的时候,总喜欢在代码中把参数的值写死,改一遍跑一遍,可移植性太糟糕了。自从用了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. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

板凳
发表于 2015-1-8 11:04:50 | 只看该作者
超级赞哦,大家都要学一下。

王JJ,女生中的战斗J!
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-1-8 13:07:46 | 只看该作者
zouquan 发表于 2015-1-8 11:04
超级赞哦,大家都要学一下。

王JJ,女生中的战斗J!

老板求不黑,会嫁不出去的
回复 支持 反对

使用道具 举报

6#
发表于 2015-1-9 16:54:52 | 只看该作者
师姐越来越高大上了啊=。=
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2015-1-9 21:09:26 | 只看该作者
Mr.Vege求好运 发表于 2015-1-9 16:54
师姐越来越高大上了啊=。=

能不黑姐吗?只是觉得这东西挺实用的,所以就贴出来小伙伴们一起用喽
回复 支持 反对

使用道具 举报

8#
发表于 2015-1-17 22:56:01 | 只看该作者
试了一下,果然nice,师姐,接着跟帖学习。
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2015-1-18 16:37:04 | 只看该作者
guojiasheng 发表于 2015-1-17 22:56
试了一下,果然nice,师姐,接着跟帖学习。

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 00:14 , Processed in 0.068505 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表