java读取properties文件详解
来源:互联网 发布:python自动化测试书籍 编辑:程序博客网 时间:2024/06/06 07:21
在日常开发中通常我们会存储配置参数信息到属性文件,这些属性文件最常见的就是键值对文件。对于配置文件来说,最常见的操作无非就这两种:读与写。以下针对这两种场景我们来做一个详细的示例。
1.读取properties文件中的键值对
假设我们在与src平级的路径中有一个conf文件夹,里面有个province.properties的属性文件,文件里的内容格式如下:
北京市={"citycode":"010","adcode":"110100","name":"北京市","center":"116.405285,39.904989","level":"city","districts":[{"citycode":"010","adcode":"110101","name":"东城区","center":"116.418757,39.917544","level":"district","districts":[]},{"citycode":"010","adcode":"110102","name":"西城区","center":"116.366794,39.915309","level":"district","districts":[]},{"citycode":"010","adcode":"110105","name":"朝阳区","center":"116.486409,39.921489","level":"district","districts":[]},{"citycode":"010","adcode":"110106","name":"丰台区","center":"116.286968,39.863642","level":"district","districts":[]},{"citycode":"010","adcode":"110107","name":"石景山区","center":"116.195445,39.914601","level":"district","districts":[]},{"citycode":"010","adcode":"110108","name":"海淀区","center":"116.310316,39.956074","level":"district","districts":[]},{"citycode":"010","adcode":"110109","name":"门头沟区","center":"116.105381,39.937183","level":"district","districts":[]},{"citycode":"010","adcode":"110111","name":"房山区","center":"116.139157,39.735535","level":"district","districts":[]},{"citycode":"010","adcode":"110112","name":"通州区","center":"116.658603,39.902486","level":"district","districts":[]},{"citycode":"010","adcode":"110113","name":"顺义区","center":"116.653525,40.128936","level":"district","districts":[]},{"citycode":"010","adcode":"110114","name":"昌平区","center":"116.235906,40.218085","level":"district","districts":[]},{"citycode":"010","adcode":"110115","name":"大兴区","center":"116.338033,39.728908","level":"district","districts":[]},{"citycode":"010","adcode":"110116","name":"怀柔区","center":"116.637122,40.324272","level":"district","districts":[]},{"citycode":"010","adcode":"110117","name":"平谷区","center":"117.112335,40.144783","level":"district","districts":[]},{"citycode":"010","adcode":"110118","name":"密云区","center":"116.843352,40.377362","level":"district","districts":[]},{"citycode":"010","adcode":"110119","name":"延庆区","center":"115.985006,40.465325","level":"district","districts":[]}]}
现在我们想把里层的name解析出来,代码如下
@Test public void test() throws IOException { Properties prop = new Properties(); String str = Demo1.class.getClassLoader().getResource("").getPath(); String input = str + "/conf/province.properties"; InputStream is = new BufferedInputStream(new FileInputStream(input)); prop.load(new InputStreamReader(is,"UTF-8")); Set<Object> keySet = prop.keySet(); for(String key: keySet.toArray(new String[keySet.size()])) { String line = prop.getProperty(key); JSONObject json = JSONObject.fromObject(line); JSONArray jsonArray = json.getJSONArray("districts"); for(int i=0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String name = jsonObject.getString("name"); System.out.println(name); } } }
api层面的使用方式很简单,使用Properties对象的getProperty方法就可以找到对应属性的值。如果没有找到相应属性,则返回null。
2.向内存或属性文件中写入键值对
上面的例子中我们演示了如何读取键值对,接下来我们再演示一下如何写入键值对。
@Test public void test() { try { OutputStream os = new FileOutputStream("test.properties"); Properties prop = new Properties(); prop.setProperty("name", "leilei"); prop.setProperty("age", "18"); prop.setProperty("interest", "algorithm"); //将键值对写入内存 //通过keySet遍历 Set<Object> keys = prop.keySet(); for (String key : keys.toArray(new String[0])) { System.out.println(key + "\t" + prop.get(key)); } //通过entrySet遍历 Set<Map.Entry<Object,Object>> entrys = prop.entrySet(); for(Map.Entry<Object,Object> entry: entrys) { System.out.println(entry.getKey().toString() + "\t" + entry.getValue().toString()); } //通过propertyNames遍历 Enumeration<?> e = prop.propertyNames(); while(e.hasMoreElements()) { String key = (String) e.nextElement(); String value = prop.getProperty(key); System.out.println(key + "\t" + value); } prop.store(os, "test properties " + new Date().toString()); //写入文件 } catch (Exception ex) { ex.printStackTrace(); } }
Properties类可以通过setProperty方法将键值对保存到内存中,此时可以通过getProperty方法读取。如果我们想将键值对持久化到文件中,可以使用store()方法将键值对写入到属性文件中。
0 0
- java读取properties文件详解
- Java读取Properties文件
- java读取.properties文件
- java读取.properties文件
- Java读取properties文件
- Java读取properties文件
- java读取properties文件
- java读取properties文件
- java读取properties文件
- java读取properties文件
- java 读取properties文件
- java 读取 properties 文件
- java读取properties文件
- java读取properties文件
- java读取Properties文件
- java 读取properties文件
- java读取properties文件
- java读取properties文件
- ArcGIS API for Javascript Graphic心得
- unity3d手柄按键事件回调
- Hadoop原理---HDFS中块的概念
- 《Ansible自动化运维》—2.(yaml的语法问题)
- Hadoop渐进六:HDFS
- java读取properties文件详解
- 科大讯飞语音合成流程
- 也能打拳也能飞——五月
- getframe在Vista和Win7中执行的问题
- python——巧用正则寻找字符串中的特定字符的位置
- 关于GridControl中的gridview用repositoryItemGridLookUpEdit 提示对象必须实现iconvertible
- 一个简单的linux下的服务器+客户端的编写
- Linux 下 tomcat部署图片服务器
- swift代码之路(一)