一.Java读取properties文件
1、基于ClassLoder读取配置文件
注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便。
1 Properties properties = newProperties();2 //使用ClassLoader加载properties配置文件生成对应的输入流
3 InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");4 //使用properties对象加载输入流
5 properties.load(in);6 //获取key对应的value值
7 properties.getProperty(String key);
2、基于 InputStream 读取配置文件
注意:该方式的优点在于可以读取任意路径下的配置文件
1 Properties properties = newProperties();2
3 //使用InPutStream流读取properties文件
4
5 BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties"));6
7 properties.load(bufferedReader);8
9 //获取key对应的value值properties.getProperty(String key);
3、通过 java.util.ResourceBundle 类来读取,这种方式比使用 Properties 要方便一些
1>通过 ResourceBundle.getBundle() 静态方法来获取(ResourceBundle是一个抽象类),这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可
1 properties.getProperty(String key);2 //config为属性文件名,放在包com.test.config下,如果是放在src下,直接用config即可
3 ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config");4 String key = resource.getString("keyWord");
2>从 InputStream 中读取,获取 InputStream 的方法和上面一样,不再赘述
1 ResourceBundle resource = new PropertyResourceBundle(inStream);
注意:在使用中遇到的最大的问题可能是配置文件的路径问题,如果配置文件入在当前类所在的包下,那么需要使用包名限定,如:config.properties入在com.test.config包下,则要使用com/test/config/config.properties(通过Properties来获取)或com/test/config/config(通过ResourceBundle来获取);属性文件在src根目录下,则直接使用config.properties或config即可。
以下是几种方式的代码参考:
1 packagecom.test.properties;2
3 importjava.io.BufferedInputStream;4 importjava.io.File;5 importjava.io.FileInputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.util.Enumeration;9 importjava.util.Properties;10
11 importorg.springframework.core.io.support.PropertiesLoaderUtils;12
13 /**
14 *15 * @ClassName: TestProperties16 * @Description: 获取配置文件信息17 * @date: 2017年11月25日 上午10:56:0018 *@version: 1.0.019 */
20 public classTestProperties {21
22
23 /**
24 *25 * @Title: printAllProperty26 * @Description: 输出所有配置信息27 *@paramprops28 *@returnvoid29 *@throws
30 */
31 private static voidprintAllProp