我只是遇到了getResourceAsInputStream的一些特殊行为,我希望有人可以阐明一些。为什么带有空字符串的getResourceAsStream返回一个空的InputStream?
通过这种方法,不存在的资源的名称返回null,就像我所期望的那样。但是,传递一个空的或空间填充的字符串实际上会返回一个有效的InputStream,其中包含零个字节。只有空的或空间填充的字符串似乎这样做;像“\ t”或“\ n”这样的空格将导致null。
这是预期的行为?如果是这样,它的目的是什么?
this.class.getResourceAsStream("no_such_resource"); // returns null
this.class.getResourceAsStream(""); // returns an InputStream
this.class.getResourceAsStream(" "); // returns an InputStream
this.class.getResourceAsStream("\t"); // returns null
很好的解释!值得注意的是,这是'FileURLConnection'的一个怪癖,它不被'JarURLConnection'共享;运行完全相同的代码,但将这些类打包到一个jar中,将不会生成列表(至少根据我的测试)。 – 2012-07-13 17:02:42
啊哈,这很有道理!感谢您的解释。 – 2012-07-13 17:41:50