Properties读取资源文件的四种方法

 

 

 1 package com.action;
 2 
 3 import java.io.InputStream;
 4 import java.util.Locale;
 5 import java.util.Properties;
 6 import java.util.ResourceBundle;
 7 
 8 public class MainTest {
 9     
10     public static void main(String[] args) throws Exception {
11         //第一种方式 ClassLoader 使用这种方式时,path一定不能用使用绝对路径(也就是以“/”开头),虽然不是绝对路径 但它会从跟目录下找 (也就是从src往下找)
12             Properties p1 = new Properties();
13             InputStream is1 = MainTest.class.getClassLoader().getResourceAsStream("com/test.properties");
14             p1.load(is1);
15             String result1 = p1.get("test").toString();
16             System.out.println(result1);
17         //第二种方式  ClassLoader 使用这种方式时,path一定不能用使用绝对路径(也就是以“/”开头),虽然不是绝对路径 但它会从跟目录下找 (也就是从src往下找)
18             Properties p2 = new Properties();
19             InputStream is2 = ClassLoader.getSystemResourceAsStream("com/test.properties");
20             p2.load(is2);
21             String result2 = p2.get("test").toString();
22             System.out.println(result2);
23         //第三种方式 Class 使用这种方式时,path既可以使用绝对路径也可以使用相对路径,只要正确找到文件的路径即可
24             Properties p3 = new Properties();
25             //InputStream is3 = MainTest.class.getResourceAsStream("../test.properties");
26             InputStream is3 = MainTest.class.getResourceAsStream("/com/test.properties");
27             p3.load(is3);
28             String result3 = p3.get("test").toString();
29             System.out.println(result3);
30         //第四种方式 ResourceBundle 使用这种方式时,资源文件必须放到src的根目录下面,并且getBundle()里面的参数不需要后缀
31             Locale locale1 = new Locale("zh", "CN");
32             ResourceBundle rb = ResourceBundle.getBundle("test",locale1);//Locale.getDefault();
33             System.out.println(rb.getString("test"));
34             //由于资源文件没有放在根目录下 导致异常  
35             //java.util.MissingResourceException: Can't find bundle for base name test, locale zh_CN
36     }
37 
38 }

 

posted on 2014-01-26 09:59  欲上云端  阅读(532)  评论(0编辑  收藏  举报