我只是遇到了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