我刚刚遇到了getResourceAsInputStream的一些特殊行为,我希望有人可以对此有所了解.
传递此方法,不存在的资源的名称将返回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
Run Code Online (Sandbox Code Playgroud)
getResourceAsStream要求 ClassLoader 构造路径的 URL。末尾带有空字符串或空格的路径指向类 .class 文件所在的文件目录,因此它构造了一个FileURLConnection对象。getResourceAsStream反过来要求该对象getInpuStream(),并且实现在字符串中构建一个排序的目录列表,根据默认区域设置将其转换为字节,并为您提供ByteArrayInputStream这些字节的信息。
FileURLConnections 行为没有很好的记录,但如果您的搜索...
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |