Java中的getResourceAsStream有以下几种:
1. Class. getResourceAsStream(String path) : path 不以’/'开头时默许是从此类所在的包下取资源, 以’/'开头则是从 ClassPath根下获取。 其只是经过path结构一个绝对路径, 最终还是由ClassLoader获取资源。
2. Class. getClassLoader. getResourceAsStream(String path) :默许则是从ClassPath根下获取?琾ath不能以’/'开头, 最终是由 ClassLoader获取资源。
3. ServletContext. getResourceAsStream(String path):默许从WebAPP根目录下取资源, Tomcat下path能否以’/'开头无所谓, 当然这和详细的容器实现有关。
4. Jsp下的application内置对象就是上面的ServletContext的一种实现。其次, getResourceAsStream 用法大致有以下几种: 第一: 要加载的文件和. class文件在同一目录下, 例如:com. x. y 下有类me. class , 同时有资源文件myfile. xml 那么, 应该有如下代码: me. class. getResourceAsStream("myfile. xml"); 第二:在me. class目录的子目录下, 例如:com. x. y 下有类me. class , 同时在 com. x. y. file 目录下有资源文件myfile. xml 那么, 应该有如下代码: me. class. getResourceAsStream("file/myfile. xml"); 第三:不在me. class目录下, 也不在子目录下, 例如:com. x. y 下有类me. class , 同时在 com. x. file 目录下有资源文件myfile. xml 那么, 应该有如下代码: me. class. getResourceAsStream("/com/x/file/myfile. xml"); 总结一下, 能够只是两种写法 第一:前面有 “ / ” “ / ”代表了工程的根目录, 例如工程名叫做myproject, “ / ”代表了myproject me. class. getResourceAsStream("/com/x/file/myfile. xml"); 第二:前面没有 “ / ” 代表当前类的目录 me. class. getResourceAsStream("myfile. xml"); me. class. getResourceAsStream("file/myfile. xml")