本篇文章就简单的说下4种方式:
关于获得到类路径文件的办法,不废话了。
====================================================================
1.InputStream url = Tester.class.getClassLoader().getResourceAsStream("path.properties");
经过本人实践分析,通过某个类的类加载器,可以获得指定文件或路径的字节流。
1.1其中path.properties通常为Web-inf文件夹下classes文件夹下的一个资源文件。
1.2也可以是getResourceAsStream("com/a/b/c/path.properties");
也就是classes文件夹下,com包下的a包b包c包下的path.properties,带路径也可以。
====================================================================
2.InputStream url = Tester.class.getResourceAsStream("/businContext.xml");
方式二,与方式一类似,都是最终得到一个流。区别在于使用这种方式时,路径必须以'/'开始,意思是从类路径的根位置,去找某个文件或资源。
====================================================================
3.String url = Tester.class.getResource("/services.list").getFile();
方式三,得到一个资源的绝对路径,所有非ClassLoader的方式,都是要指定下 '/'根位置。
====================================================================
4.String url = Tester.class.getClassLoader().getResource("build.xml").getFile();
方式四,获得资源的绝对路径,比如:F:/rxt_workspace/zftWeb/WebRoot/WEB-INF/classes/build.xml
总结:
1.用ClassLoader获取资源位置或流对象时,就不要写'/'路径
2.用class.getResource();获取资源位置或流对象时,必须写 '/' ,且必须是斜杠,反斜杠不行。
核心重点是:什么是类路径,通常为WebRoot--Web-inf--classes文件夹的路径,即为类路径。
但这不是绝对的,其实可以是很多路径,多少取决于你设置了多少类路径。比如用Axis2-WebService组建发布WS服务时,会产生一个名为POJO的目录,该目录下存放了所有WS对象.class文件。那么该路径也是一个类路径。
具体配置在,如图:
工程--build path--Source添加源文件夹, 然后设置OutPut folder路径
意思为,一个源文件夹将编译后的.class 文件生成到OutPut folder路径中,OutPut folder就是你所指定的类路径中。
所以,上面的4种方式,都是从类路径下找资源,搞清楚这一点,以后拿任何文件,都不在话下!
多交流多分享~有不对的地方,还请指明!