给出以下代码:

/* 1 */ InputStream in1 = ClassLoader.getSystemResourceAsStream("foobar.txt");
/* 2 */ InputStream in2 = this.getClass().getResourceAsStream("/foobar.txt");

两者都返回相同的资源吗(我认为答案是"is")?

他们都访问“相同”类路径吗?为什么方法1中的方法名称是“get 系统 ResourceAsStream”,但是对于方法2,它只是“getResourceAsStream”?

谢谢

最佳答案

根据javadoc



用于加载this的类加载器不一定是系统类加载器。在一个简单的桌面应用程序中,这可能是正确的。但是,除其他事项外,Web应用程序通常具有更复杂的类路径层次结构,因此不一定是相同的。因此,在复杂的类路径中,返回的内容还取决于在类路径中 float 多少个“foobar.txt”副本。

简短的答案是,您不能假设它们将为同一资源返回流。

关于java - ClassLoader.getSystemResourceAsStream和getClass()。getResourceAsStream()之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7615040/

10-09 07:23