我发现自己要解决我的软件中的一个奇怪错误:问题是它只有在我将我的应用程序打包成可运行的 JAR 时才会出现。
问题出在这个简单的代码中:我添加了 loopCounter 来计算循环的次数
private static byte[] read(InputStream source) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
int loopCounter = 0;
int bytesRead;
try {
byte[] buffer = new byte[4096];
while ((bytesRead = source.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
loopCounter++;
}
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}
一个例子:
source = ClassLoader.class.getResourceAsStream("file.lol");
loopCounter in Eclipse = 1366
loopCounter in JAR = 1405
我的问题是:为什么同一个 InputStream 会有这么大的差异?
编辑:我用正确的代码更改了我的代码,但 loopCounters 仍然不同。