当前位置: 代码迷 >> J2SE >> 大神快来啊 发现一个匪夷所思的有关问题!
  详细解决方案

大神快来啊 发现一个匪夷所思的有关问题!

热度:81   发布时间:2016-04-23 19:39:36.0
大神快来啊! 发现一个匪夷所思的问题!!!!!!!!!!!!!!!
InputStream in1 = Thread.currentThread().getContextClassLoader().getResourceAsStream("\\com\\day12\\Message.properties");
InputStream in2 = LoginDemo.class.getResourceAsStream("/com/day12/Message.properties");
InputStream in3 = new FileInputStream("src\\com\\day12\\Message.properties");
求大神看看,上面输入流3种写法,
我发现 in1里面 只能用反斜杠,且前面不能加src
in2 中只能用正斜杠,且前面必须加一个/
in3 中正反斜杠都可以,但是前面必须加src
我已经晕了,哪位大神可以不吝赐教...告诉我为什么

------解决思路----------------------
关于你的问题我来做两部分解答:
1、首先in1\in2 是属于classLoader 加载资源,而in3不是,它是纯粹的路径加载,所以in1\in2前面是不能有src的。因为它是根据类路径来找的
2、粗看in1\in2是一样的,其实你看下源码其实两者调用的方法不一样,in1调用的是getResourceAsStream,而in2调用的是getSystemResourceAsStream
3、明白了第2点,我们就需要看两者的区别,getResourceAsStream 方法前面是不需要加/或\\,但是加/不会错,加\\会找不到,所以并不是\,//不等同

  相关解决方案