关键词搜索

源码搜索 ×
×

JAVA通信编程(二)——如何读取java的properties配置文件(插播)

发布2015-12-05浏览3794次

详情内容

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

欢迎跳转到本文的原文链接:https://honeypps.com/network/java-properties-file/

如何读取java的properties配置文件本不属于java通讯编程这个系列的范畴,但是在做一些应用中编写通讯编程需要读取一些通讯参数,这样可以使程序更加的通用化。并且博主在读取properties文件中遇到了点小坑,在这里说明一下,防止各位读者遇到同样的麻烦。

其实问一下度娘,就有很多信息关于如何读取java的properties配置文件的,这里我做一下小封装。

 

  1. package com.zzh.comm;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.Properties;
  10. import java.util.Set;
  11. import org.apache.log4j.Logger;
  12. public final class ReadProperties
  13. {
  14. private static Logger logger = Logger.getLogger(Object.class.getName());
  15. public Map<String, String> getPropertiesMap(String fileName)
  16. {
  17. Map<String,String> map = new HashMap<String,String>();
  18. Properties prop = new Properties();
  19. InputStream in = null;
  20. try
  21. {
  22. in = Object.class.getResourceAsStream(fileName);
  23. prop.load(in);
  24. Set<String> set = prop.stringPropertyNames();
  25. for(String s: set)
  26. {
  27. String value = prop.getProperty(s);
  28. if(value != null)
  29. {
  30. map.put(s,value);
  31. }
  32. }
  33. }
  34. catch(Exception e)
  35. {
  36. logger.error(e.getMessage());
  37. }
  38. finally
  39. {
  40. if(in != null)
  41. {
  42. try
  43. {
  44. in.close();
  45. }
  46. catch (IOException e)
  47. {
  48. logger.error(e.getMessage());
  49. }
  50. }
  51. }
  52. return map;
  53. }
  54. }

这样可以通过Map<String,String> map = new ReadProperties().getPropertiesMap(fileName);的方式很方便的读取配置文件中的内容,然后在上层应用中直接读取Map中的参数。

 

这里主要关注下in = Object.class.getResourceAsStream(fileName);这一句,博主是在Eclipse下建立的一个project来编写这个程序,我直接在project存放properties文件,但是当我将project打成jar包然后在linux下独立运行的时候就会发生错误,主要是因为涉及到一些规范,需要将properties存放在某些规定的目录下,而并不在project下,即不在打包的jar中,所以这样是会有读取错误的,需要将in = Object.class.getResourceAsStream(fileName);换成in = new BufferedInputStream(new FileInputStream(new File(fileName)));这样可以读取非classpath路径下的properties文件,反之,如果要读取classpath下的properties文件需要采用in = Object.class.getResourceAsStream(fileName);这种方式或者类似的方式。
 

欢迎跳转到本文的原文链接:https://honeypps.com/network/java-properties-file/

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载