您的位置:首页 > 编程语言 > Java开发

java 高新技术【6】 反射开发框架以及用 类加载器 管理资源和配置文件

2012-05-31 09:38 896 查看


//第一种方士:【把文件放在  项目名 下  】 尽量  面向父类 和 接口编程 。
InputStream ips = new FileInputStream("config.properties");

第二种 :com/itm/day1/config.properties 用类加载器的方式:

在classpath 那些指定的目录下,逐一的去查找 你要加载的那个文件。 bin是用户的那个路径。
在  classPath的根目录下  逐一的查找。

InputStream ips =  ReflectTest2.class.getClassLoader().getResourceAsStream("com/itm/day1/config.properties");

第三种:com/itm/day1/config.properties
InputStream ips =  ReflectTest2.class.getResourceAsStream("config.properties");

第四种:com.itm.day1.resource/config.properties
InputStream ips =  ReflectTest2.class.getResourceAsStream("resource/config.properties");

[java] view
plaincopyprint?

import java.io.FileInputStream;  

import java.io.InputStream;  

import java.util.Collection;  

import java.util.Properties;  

  

public class ReflectTest2 {  

  

    /** 

     *  

     * 一定要用完整的路径,但完整的路径不是 硬编码。而是计算出来的;。 

     * @param args 

     * @throws Exception  

     */  

    public static void main(String[] args) throws Exception {  

          

        //第一种方士:【把文件放在  项目路径下 如:你的java工程名为:test,则放在test下】 尽量  面向父类 和 接口编程 。  

        InputStream ips = new FileInputStream("config.properties");  

          

        /* 第二种 :用类加载器的方式: 

         

         在classpath 那些指定的目录下,逐一的去查找 你要加载的那个文件。 bin是用户的那个路径。 

         在  classPath的根目录下  逐一的查找。 

         

        InputStream ips =  ReflectTest2.class.getClassLoader().getResourceAsStream("com/itm/day1/config.properties");*/  

          

        // 第三种:com/itm/day1/config.properties  

//      InputStream ips =  ReflectTest2.class.getResourceAsStream("config.properties");  

          

//       第四种:com.itm.day1.resource  

//       InputStream ips =  ReflectTest2.class.getResourceAsStream("resource/config.properties");  

          

          

          

        // Properties 相当于 hashMap,但是 : 可以把自己的内存的键值对  存到 硬盘文件内去、。  

        //也可以在 初始化的时候,从一个文件 把自己的键值对 加载进来。  

        Properties props  = new Properties();  

        props.load(ips);  

        ips.close();// 把操作系统的东西  干掉。  

          

        // 拿到 文件的 key值  

        String className = props.getProperty("className");  

        Collection collections = (Collection) Class.forName(className).newInstance();  

          

        ReflectPoint pt1 = new ReflectPoint(3,3);  

        ReflectPoint pt2 = new ReflectPoint(5,5);  

        ReflectPoint pt3 = new ReflectPoint(3,3);  

        collections.add(pt1);  

        collections.add(pt2);  

        collections.add(pt3);  

        collections.add(pt1);  

          

          

        System.out.println(collections.size());  

    }  

  

}  



[plain] view
plaincopyprint?

className=java.util.HashSet  

小结:

1.用IO流的方式读写文件,通常是用绝对路径,但是为了通用性,这个绝对路径通常不要硬编码,而是运算出来的。

2.类加载器在各种框架中普遍应用,无论是直接的加载(如1),还是简化的加载(如2,3,4),它们的本质都是ClassLoader。

3.简化的类加载器可以使用相对路径,也可以使用绝对路径。

有关类加载器的深入探讨:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐