Scripts 学盟

标题: java对properties文件的操作 [打印本页]

作者: Snail    时间: 2011-9-28 23:12:57     标题: java对properties文件的操作

本帖最后由 Snail 于 2011-10-28 23:26 编辑

1. 资源文件所存放的位置
   资源文件妨碍classpath下,即工程项目的class包下

2. 获取系统资源文件的方式有2中
  1.    a.  通过  InputStream inputstream = ClassLoader.getSystemResourceAsStream("info.properties");
  2.    b. 通过 InputStream inputstream = this.getClass().getResourceAsStream("/info.properties");
复制代码
采用第一种方式获取资源文件时,文件不以"/" 开头,而采用方法b的话,文件必须"/"开头

3. 提取加载资源文件的信息
Java代码
  1. Properties properties = new Properties();
  2. InputStream inputstream = ClassLoader.getSystemResourceAsStream("info.properties");
  3. // InputStream inputstream = this.getClass().getResourceAsStream("/info.properties");

  4. properties.load(inputstream);
复制代码
4. 操作资源文件
  1.    a. 根据key值在资源文件中查询value值
  2.       1. getProperty(String key) 用指定的键在此属性列表中搜索属性。
  3.       2. getProperty(String key, String defaultValue)   用指定的键在属性列表中搜索属性。
  4.      
  5.    b. 获取所有的键值对的信息
复制代码
Java代码
  1. Enumeration<String> enumvalue = (Enumeration<String>) properties.propertyNames();// 返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键

  2. while (enumvalue.hasMoreElements())
  3. {
  4.       String key = enumvalue.nextElement();
  5.       System.out.println(key + " : " + properties.getProperty(key));
  6. }


  7.    c. 向资源文件中添加键值信息,如果key值相同就会将原有的信息覆盖
  8.         
  9. Java代码
  10. URL url = ClassLoader.getSystemResource("info.properties");
  11. File file = new File(url.toURI());
  12.         
  13. InputStream is = new FileInputStream(file);
  14. properties.load(is);
  15. properties.setProperty("key", "value");

  16. OutputStream fos = new FileOutputStream(file);
  17. properties.store(fos, null);

  18. fos.flush();
  19. is.close();



  20.   d. 删除相关的键值对
  21.       
  22. Java代码

  23. File file = new File(ClassLoader.getSystemResource("info.properties").toURI());
  24. InputStream is = new FileInputStream(file);

  25. properties.load(is);
  26. properties.remove("key");

  27. OutputStream fos = new FileOutputStream(file);
  28. properties.store(fos, null);

  29. is.close();
  30. fos.flush();
  31. fos.close();File file = new File(ClassLoader.getSystemResource("info.properties").toURI());
  32. InputStream is = new FileInputStream(file);

  33. properties.load(is);
  34. properties.remove("key");

  35. OutputStream fos = new FileOutputStream(file);
  36. properties.store(fos, null);

  37. is.close();
  38. fos.flush();
  39. fos.close();
复制代码

作者: 菜鸟贝雷    时间: 2011-10-28 10:26:28

不错,灰常有用!
作者: 混混@普宁.中国    时间: 2011-10-28 11:11:42

之前一直用 xml 做配置文件, 现在反例觉 properties 文件挺方便实用的
又不需要第三方组件来解释
作者: Snail    时间: 2011-10-28 18:15:38

菜鸟贝雷 发表于 2011-10-28 10:26
不错,灰常有用!


作者: Snail    时间: 2011-10-28 18:16:24

混混@普宁.中国 发表于 2011-10-28 11:11
之前一直用 xml 做配置文件, 现在反例觉 properties 文件挺方便实用的
又不需要第三方组件来解释 ...

我也有同感




欢迎光临 Scripts 学盟 (http://www.iscripts.org/) Powered by Discuz! X2