Java中从properties配置文件中读取信息的几种方法

来源:互联网 发布:淘宝店铺店招类型 编辑:程序博客网 时间:2024/04/30 05:48

       在编写大型程序的时候,我们经常会保存一些系统配置信息,对于这种信息量比较小的文件读取我们一般选择系统配置文件完成。本文主要介绍Java中的properties文件的读取,网上方法很多我只是介绍以下我用到的三种,另外还有更简便的方法希望大家能分享我们共同学习!

       properties配置文件内容主要有两个部分组成,分别问key和value,其基本形式为key = value。在Eclipse中默认编码方式为Unicode,以下为properties配置文件内容格式,其中"="前面的为key是自定义的名字,后面为value内容是自定义的字符串,切记不需要"":

name=\u5B54\u5B50gentle=\u7537school=\u897F\u5317\u519C\u6797\u79D1\u6280\u5927\u5B66

       跟IO流一样,读取配置文件也需要“流入”对象。properties类表示了一个持久的属性集。properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。ResourceBundle类中的getBundle()方法可以使用指定的基本名称、语言环境和调用者的类加载器获取资源包。详细实例如下:

package cn.nwsuaf.test;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import java.util.PropertyResourceBundle;import java.util.ResourceBundle;public class ResourceBundleDemo {// 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法public String test1() {Properties p = new Properties();// 用该方法时文件路径必须包含文件后缀名,否则编译不通过,test.properties为配置文件名InputStream in = this.getClass().getClassLoader().getResourceAsStream("cn/nwsuaf/test/test.properties");try {p.load(in);in.close();} catch (IOException e) {e.printStackTrace();}return "姓名:" + p.getProperty("name") + " 性别:" + p.getProperty("gentle")+ " 学校:" + p.getProperty("school");}// 使用java.util.ResourceBundle类的getBundle()方法public String test2() {// 使用ResourceBundle对象读取配置文件中的内容,文件路径不需要后缀名ResourceBundle rb = ResourceBundle.getBundle("cn/nwsuaf/test/test");return "姓名:" + rb.getString("name") + " 性别:" + rb.getString("gentle")+ " 学校:" + rb.getString("school");}// 使用java.util.PropertyResourceBundle类的构造函数public String test3() {InputStream in = null;ResourceBundle rb = null;try {// 该方法必须指明准确的文件地址,否则编译不通过in = new BufferedInputStream(new FileInputStream("src/cn/nwsuaf/test/test.properties"));rb = new PropertyResourceBundle(in);in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "姓名:" + rb.getString("name") + " 性别:" + rb.getString("gentle")+ " 学校:" + rb.getString("school");}public static void main(String[] args) {ResourceBundleDemo r = new ResourceBundleDemo();System.out.println("test1-->" + r.test1());System.out.println("test2-->" + r.test2());System.out.println("test3-->" + r.test3());}}



0 0
原创粉丝点击