这是个非常基础的问题了,这里提供一些演示样例,帮助高速理解和记忆这个问题。
在该方法的文档:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29 中具体有描写叙述了它接收的路径是怎样定义的! 本文原文出处: blog.csdn.net/bluishglc/article/details/38753047 严禁不论什么形式的转载,否则将托付CSDN官方维护权益!
关于Class.getResourceAsStream

首先。 我们必须先了解根路径“/”是怎样定义的。这对我们使用getResourceAsStream准确载入文件是非常重要的。

首先。我们要明白这个根路径是相应类所处类路径上的根文件夹!什么意思呢?假如一个项目经过编译之后生成了例如以下class文件和文件夹结构:

com
|-github
|-demo
| |-A.class
| |-1.txt
|-B.class
|-2.txt
在这种编译输出文件夹下,文件"1.txt"的绝对路径名为:"/com/github/demo/1.txt" 文件"2.txt"的绝对路径名为:"/com/github/2.txt
如同getResourceAsStream方法文档上的解释:以/开头时是绝对路径,与类路径不同的是路径上的“."换成了"/"。
接下着我们看相对路径!

首先我们必须明白“相对”路径总是指相对于当前class的路径。
比如。假设我们使用
InputStream is= A.class.getResourceAsStream("1.txt");
路径不是以/开头,说明这是一个相对路径,相对的是A.class这个文件,所以,这里的“1.txt”所指的正确位置是与A.class处于同一文件夹下的1.txt文件,这一文件是存在的,所引不会报错。
假设我们按相对路径的方式通过A去载入2.txt。则路径应该这样描写叙述:
InputStream is= A.class.getResourceAsStream("../2.txt")。   
是的,用“.."表示上一级文件夹。
假设我们按相对路径的方式通过B去载入1.txt。则路径应该这样描写叙述:   
InputStream is= B.class.getResourceAsStream("demo/1.txt")。   
注意。demo前是没有/的,这是一个相对路径,是相对于B所在包下的demo子包里的1.txt文件,所以这个路径也是正确无误的!

关于ClassLoader.getResourceAsStream

class.getResourceAsStream终于调用是ClassLoader.getResourceAsStream

仅仅是在这之前对參数进行了调整。

假设參数已/开头,则去除/。否则把当前类的包名加在參数的前面。

在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径,而且不能已 / 开头。

InputStream resourceAsStream = ClassLoader.getSystemResourceAsStream("com/github/demo/1.txt");

对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释的更多相关文章

  1. Class.getResourceAsStream和ClassLoader.getResourceAsStream方法

    项目中,有时候要读取当前classpath下的一些配置文件,下面介绍下Class.getResourceAsStream和ClassLoader.getResourceAsStream两种方法以及两者 ...

  2. Class.getResourceAsStream() VS. ClassLoader.getResourceAsStream()

    For Class.getResourceAsStream(String name), if the name parameter doesn't start with a "/" ...

  3. Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别

    Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.clas ...

  4. Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明

    Class.getResourceAsStream(): com.xusweeter.iot.ws.vodafone.config.VodafoneServiceConfig.class.getRes ...

  5. class getResourceAsStream 和 classloader getResourceAsStream获取资源的不同

    工程目录结构: prj(工程根目录) cn json classloader GetResourceByClassAndClassLoader.Java beans.xml /** * */ pack ...

  6. ClassLoader.getResourceAsStream(name);获取配置文件的方法

    ClassLoader.getResourceAsStream(name);路径问题 InputStream in = getClass().getResourceAsStream('/'+" ...

  7. classLoader.getResourceAsStream中文乱码

    一直用一个方法安然无恙,今天在新项目中突然乱码了,原代码: ClassLoader classLoader = Thread.currentThread().getContextClassLoader ...

  8. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别

    1.ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别 例如你写了一个MyTest类在包com.test.mycode ...

  9. JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

       Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.c ...

随机推荐

  1. vue2.0--组件通信(非vuex法)

    写在前面: 1.父组件的data写法与子组件的data写法不同 //父组件 data:{ //对象形式 } //子组件 data:function(){ return { //函数形式 } } 2.引 ...

  2. CentOS7安装Pycharm后无法使用日常的快捷键

    1.在百度查了一圈,原来是vim在搞鬼 楼主在安装的时候,有另外添加了vim插件,所以ctrl +c之类的键都用不了,而且每次写py文件前都要先按insert键,真坑! 2.卸载pycharm里面的v ...

  3. nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解

    1.nginx介绍 1丶俄罗斯人开发的,开源www服务软件 2丶软件一共780K 3丶nginx本身是一款静态(html,js,css,jpg等)www软件 4丶静态小文件高并发,同时占用的资源很少, ...

  4. 查找文件which locate find

    (1)which:查找命令文件路径 which ls //命令的路径查找是根据PATH环境变量 whereis ls echo $PATH //打印PATH环境变量 (2)locate:查找任意文件 ...

  5. win 10 下面安装 mysql-8.0.12-winx64 的过程

    win 10 下面安装 mysql-8.0.12-winx64 的过程 1.官网下载 mysql 2.解压到你要安装的目录 3.在mysql目录D:\Programming\mysql-8.0.12- ...

  6. HDU 6467.简单数学题-数学题 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    简单数学题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. jQuery筛选

    1.filter筛选出与指定表达式匹配的元素集合 html: <p>Hello</p><p>Hello Again</p><p class=&qu ...

  8. php在web服务器中的工作原理

    1.web工作原理 我是学习PHP网站建设的,那么网站在客户端和服务端的运行是网站运行的根本所在,那个这个运行过程是怎样的呢?我们一探就将! Web:终端 服务器web:我们把提供(响应)服务的计算机 ...

  9. 2010-2011 ACM-ICPC, NEERC, Southern Subregional Contest C Explode 'Em All

    暴力枚举,状态压缩. 枚举哪几行放,复杂度为$O(2^{25})$,大概有$3000$多万种情况.假设有$x$行放了,没放的那几行状态或起来为$st$,如果$st$中$1$的个数大于$x$,那么不可取 ...

  10. [BZOJ1444]有趣的游戏(AC自动机+矩阵乘法)

    n个等长字符串,机器会随机输出一个字符串(每个字母出现的概率为p[i]),问每个字符串第一个出现的概率是多少. 显然建出AC自动机,套路地f[i][j]表示i时刻位于节点j的概率. 构建转移矩阵,当i ...