黑马程序员技术交流社区

标题: 两种读取properties方法 [打印本页]

作者: 张森    时间: 2013-1-5 17:42
标题: 两种读取properties方法
本帖最后由 张向辉 于 2013-1-16 11:30 编辑

两种常见的方式 ,第一种是利用ResourceBundle,较为方便,一个是利用类加载器

/**
* 获取properties配置文件中的内容方法:
*/
public class ReadProperties {
        // 方法一
        public void One() {
                ResourceBundle bundle = ResourceBundle.getBundle("test");// 获得资源包
                Enumeration<String> allName = bundle.getKeys();// 通过资源包拿到所有的名称
                // 遍历
                while (allName.hasMoreElements()) {
                        String name = (String) allName.nextElement();// 获取每一个名称
                        String value = bundle.getString(name);// 利用已得到的名称通过资源包获得相应的值
                        System.out.println(name + "=" + value);
                }
        }

        // 方法二
        public void Two() throws Exception {
                InputStream in = ReadProperties.class.getClassLoader().getResourceAsStream("test.properties");// 获得类加载器,然后把文件作为一个流获取
                Properties prop = new Properties();
                prop.load(in);// 将Properties和流关联
                Enumeration<?> allName = prop.propertyNames();// 获取所有的名称
                while (allName.hasMoreElements()) {
                        String name = (String) allName.nextElement();// 获得每一个名称
                        String value = (String) prop.get(name);// 利用已得到的名称通过Properties对象获得相应的值
                        System.out.println(name + "=" + value);
                }
                in.close();
        }
}



作者: 舒远    时间: 2013-1-5 20:12
学习了,受教
作者: 冯超    时间: 2013-1-5 21:04
我说一个可以用传统方法来获取
//properties代码 死代码,可以牢记:
Properties pro = new Properties();
pro.load(in);
pro.getProperty(name);
  1. private void proMethod(InputStream in) throws IOException {
  2.                 Properties pro = new Properties();
  3.                 pro.load(in);
  4.                
  5.                 //获取资源
  6.                 String url = pro.getProperty("url");
  7.                 String username = pro.getProperty("username");
  8.                 String password = pro.getProperty("password");
  9.                 System.out.println("Current read present resource is:");
  10.                 System.out.println(url);
  11.                 System.out.println(username + ":" + password);
  12.         }
复制代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
           String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
           String filename = path.substring(path.lastIndexOf("\\") + 1);/*path.lastIndexOf("\\") return 最后一个\所在的索引  path.substring(path.lastIndexOf("\\"+1) return该字符串索引后的子字符串*/
           System.out.println("获取的文件资源为:" + filename);
           FileInputStream in = new FileInputStream(path);
           proMethod(in);
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2