`
lizhuang
  • 浏览: 888074 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java的getResourceAsStream

    博客分类:
  • Java
阅读更多
原理是与类加载器相关
类加载器原理请参考:http://www.cnblogs.com/xing901022/p/4574961.html
JDK说明:
Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream(java.lang.String).


首先,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的一种实现。

其次,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");

最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
分享到:
评论

相关推荐

    Java中getResourceAsStream用法分析

    主要介绍了Java中getResourceAsStream用法,较为详细的分析了getResourceAsStream的功能及用法,需要的朋友可以参考下

    getResourceAsStream

    java getResourceAsStream种类,分我所知道的3种情况

    Java中getResourceAsStream的用法.md

    Java中getResourceAsStream的用法.md

    Java 使用getClass().getResourceAsStream()方法获取资源

    主要介绍了Java 使用getClass().getResourceAsStream()方法获取资源的相关资料,这里主要讲解哪种方式可以获取到文件资源,需要的朋友可以参考下

    java-loadresource.rar

    Java加载资源文件的两种方法getResource与getResourceAsStream

    java解析给定url

    InputStream in = getClass().getResourceAsStream("/config.properties"); try { props.load(in); Enumeration en = props.propertyNames(); System.out.print("读取配置文件:"); while(en....

    java读取配置文件的实例代码

    java项目读取配置文件的实例代码,使用class.getClassLoader().getResourceAsStream方法。

    Java连接数据库代码

    Java连接数据库代码实现代码, 代码片段: public MyTask(ServletContext context) { this.mContext = context; Properties prop = new Properties(); InputStream in = null; try { in = MyTask.class....

    java类读取配置文件信息

    在java类里直接读取配置文件中的信息,用到的方法是this.getClass().getClassLoader().getResourceAsStream

    利用Java发送邮件(含附件)的例子

    static { try { props.load(ReadPropertity.class.getClassLoader().getResourceAsStream( "utils.properties")); } catch (IOException e1) { e1.printStackTrace(); } } public static String getProperty(String...

    aspose pdf 10.8.0 for java

    刚开始简单破解了一下。 生成PDF都没问题,后来发现生成... InputStream is = XXX.class.getResourceAsStream("/pdflicense.xml"); license.setLicense(is); is.close(); 其中pdflicense.xml已经包含在jar文件里面

    DruidJDBCUtils.java

    InputStream is = DruidJDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); prop.load(is); ds = DruidDataSourceFactory.createDataSource(prop); } catch (IOException e) { e....

    uap-java8:基于 https 维护的数据的 Java8 User Agent 解析器

    这是基于收集的数据的 Java8 用户代理解析器实现。 为了使用这个解析器,你需要一个来自这里的解析器数据库版本: : 。 此文件不作为此存储库的一部分分发。 用法 Parser p = new Parser ( // Obtain this file ...

    读取Properties文件的java类

    is = ReadProperties.class.getClassLoader().getResourceAsStream( strFilePath); if (is == null) { WriteLog.writeLog("閰嶇疆鏂囦欢涓嶅瓨鍦紝璇锋鏌ユ枃浠跺悕鎴栬矾寰勬槸鍚︽纭紒"); ...

    Jonny023#Study#Java-加载properties文件1

    1、使用class变量的getResourceAsStream()方法 2、使用class.getClassLoader()所得到的java.lang.Clas

    JavaExcel读写库JxlExcel.zip

     .getResourceAsStream("/testRead.xls"); reader.setExcelTemplate("testRead"); List[]> datas = reader.readArrays(); //List beans = reader.readBeans(Account.class); //List, Object>> maps = ...

    Java简单音乐播放器播放wav文件示例.rar

    一个挺简单的Java音乐播放器,主要是播放wav格式的音频文件,其它格式暂不支持,代码比较早,确实是比较简单的例子,Java新手参考吧。源代码如下所示:  public MusicDemo() {  textbox=new TextBox("title",...

    java加载属性配置文件(properties文件)——从入门到进阶

    java加载属性配置文件[properties文件]什么是properties文件为什么要使用properties文件使用java加载properties文件的两种方式使用类的加载器获得输入流加载文件getResourceAsStream()介绍使用文件输入流加载文件...

    aspose-slides-16.10.0-java.rar

    aspose.slides-16.10.0.jar破解版,亲测可用。...InputStream input = AsposeUtil.class.getResourceAsStream("license.xml"); License license = new com.aspose.slides.License(); license.setLicense(input);

    使用J2SE API读取Properties文件的六种方法

    使用java.util.Properties类的load()方法  示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));  Properties p = new Properties();  p.load(in);  2。使用java.util....

Global site tag (gtag.js) - Google Analytics