读取资源文件

一、简介

    读取资源文件通常有两种方式:
    1、使用 getClass().getResourceAsStream(name) 获取 java.io.InputStream
    2、使用 ClassLoader.getSystemResourceAsStream(name) 获取 java.io.InputStream

二、用法详解

    1、getClass().getResourceAsStream(name),使用方式,常有三类情况;
    (1)、资源文件与类文件位于同一目录结构下:
    getClass().getResourceAsStream("application.properties")
    (2)、资源文件位于类文件子目录,如(类文件目录为com/cnblogs/javalouvre/Foo.class,资源文件目录为com/cnblogs/javalouvre/sub/file/application.properties)
    getClass().getResourceAsStream("sub/file/application.properties")
    (3)、资源文件与类文件位于不同目录,如(类文件目录为 com/cnblogs/javalouvre/Foo.class,资源文件目录为net/csdn/javalouvre/application.properties)
    getClass().getResourceAsStream("/net/csdn/javalouvre/application.properties")
    2、ClassLoader.getSystemResourceAsStream(name),使用方式通常都是基于classes目录来访问
    ClassLoader.getSystemResourceAsStream("application.properties"); // application.properties位于classes根目录
    ClassLoader.getSystemResourceAsStream("com/cnblogs/javalouvre/application.properties"); // application.properties位于classes目录下子目录

三、小结

    无论是两个语句的行为完全一致与否,取决于应用程序的类加载器。对于一个简单的应用程序,两者都指的是同一个类加载器。然而,对于大多数应用程序,如内的Servlet容器中运行的Web应用程序,则不同。
     一般情况下,getClass().getResourceAsStream(name)将是更好的选择,因为它会使用相同的类加载器作为其中的代码属于类。

posted @ 2014-05-30 18:41  Bruce.Chang.Lee  阅读(177)  评论(0)    收藏  举报