【反射】java绝对路径获取文件

 

1. Class.getResourceAsStream(String path)          

     用法:AAA.class.getResourceAsStream("a.txt") 

path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath(Src根目录)根下获取。
其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
 

2. Class.getClassLoader().getResourceAsStream(String path)          

     用法:AAA.class.getClassLoader().getResourceAsStream("a.txt")  

默认则是从ClassPath根下获取,path不能以'/'开头,最终是由ClassLoader获取资源。
 
3. ServletContext. getResourceAsStream(String path)
默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
如果是在SRC 下,可以用第一种方式,如果是在WEB环境下,用/WEB-INF/classes/xxx.file 应该是可以的,但是这个我没有试过。

     用法:首先获得一个ServletContext对象,获取方式参考博文 http://blog.csdn.net/sinat_36710456/article/details/78731248

然后调用ServletContext的getResourceAsStream(String path)方法来获得InputStream输入流。

 

说明:AAA是一个java类

分析

     首先,调用对象的class()静态属性是获得当前对象的类类型,然后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,最后调用了类加载器的getResourceAsStream()方法来加载资源。

 

你可能感兴趣的:(java)