前言
首先,问问大家下面这段流读取的代码是否存在问题呢?
inputStream = ....
try {
// 根据inputStream的长度创建字节数组
byte[] arrayOfByte = new byte[inputStream.available()];
// 调用read 读取字节数组
inputStream.read(arrayOfByte, 0, arrayOfByte.length);
return new String(arrayOfByte);
}catch (Exception e){
e.printStackTrace();
}
复制代码
实际上的确是有问题的,而且在线上环境结结实实的坑了我们一把。
问题回溯
- 在xx银行项目上,报了下面的一个错误信息,数组越界,如下图所示:
- 反编译jar包的代码,在如下位置用到了数组读取,根据=号切割为组数,如下图所示:
- 而这个切割的字符串,是调用
loadResource
方法加载ORG_PATH_MAP
得到,如下图所示: