一个非常奇怪的问题(关于 InputStream),不知道是否 Java 的 BUG
我使用如下代码读取一个 16K 大小的数据文件:data.dat
byte[] gbData = new byte[8177 * 2];
InputStream in = ClassLoader.getSystemResourceAsStream(
"com/sunway/james/st/res/data.dat");
in.read(gbData);
in.close();
如果我不打包,直接在按制台下运行,这些数据都可以完整的读出来。但是,如果我打成 jar 包后,不论是通过 manifest 的 Main-Class 运行还是通过 -cp jarfile mainclass 运行,结果都不正确,gbData 这个数据只有前 600 多个数值是正确的,后面的全部都是 0。
如果我把 in.read(gbData) 换成按每 256 个字节读一次这样多次读下来,从 600 多的某个位置开始,后面的数据虽然不全都是 0,但基本上都不正确,请问各位,这是一个什么问题?该怎么解决?