Java中getResourceAsStream的用法 (取路径)

一、用法

Java中的getResourceAsStream有以下几种:

  1. Class.getResourceAsStream(String path) : path 不以’/'开头时,则默认是从此类所在的包下取资源,如果以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
  2. Class.getClassLoader.getResourceAsStream(String path) :默认是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
  3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
  4. Jsp下的application内置对象就是上面的ServletContext的一种实现。

比如项目目录如下: 

|--project 
     |--src 
         |--com.x
		 	 |--file 
				|--myfile3.xml
		     |--y 
				|--Test.java 
				|--myfile.xml
				|--file 
					|--myfile2.xml
     |--target
         |--com.x
		 	 |--file 
				|--myfile3.xml
		     |--y 		 
				|--Test.class 
				|--myfile.xml
				|--file 
					|--myfile2.xml

getResourceAsStream 用法大致有以下几种:

第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件myfile.xml。那么,代码如下:

Test.class.getResourceAsStream("myfile.xml");

第二:资源文件在Test.class目录的子目录下,例如:在 com.x.y.file 目录下的资源文件myfile2.xml。那么,代码如下:

Test.class.getResourceAsStream("file/myfile2.xml");

第三:资源文件不在Test.class目录下,也不在其子目录下,例如:在 com.x.file 目录下的资源文件myfile3.xml。那么,代码如下:

Test.class.getResourceAsStream("/com/x/file/myfile3.xml");

二、总结

总结一下,其实就两种写法。

第一:path 以’/'开头

其中,“ / ”代表了工程的根目录。

Test.class.getResourceAsStream("/com/x/file/myfile3.xml");

第二:path 不以’/'开头

代表当前类的目录

Test.class.getResourceAsStream("myfile.xml");

Test.class.getResourceAsStream("file/myfile2.xml"); 

猜你喜欢

转载自blog.csdn.net/icanlove/article/details/44097839