读取资源文件
一、简介
读取资源文件通常有两种方式:
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)将是更好的选择,因为它会使用相同的类加载器作为其中的代码属于类。
薔薇猛虎皆成個性,陽光雨露俱是天恩!
浙公网安备 33010602011771号