【发布时间】:2011-09-03 20:43:31
【问题描述】:
我有一个 Java 类,我通过 InputStream 读取数据
byte[] b = null;
try {
b = new byte[in.available()];
in.read(b);
} catch (IOException e) {
e.printStackTrace();
}
当我从 IDE (Eclipse) 运行我的应用程序时,它可以完美运行。
但是当我导出我的项目并将它打包在一个 JAR 中时,读取命令不会读取所有数据。我该如何解决?
这个问题主要发生在 InputStream 是一个文件 (~10kb) 时。
谢谢!
【问题讨论】:
-
所以看起来你运行 eclipse 的操作系统在调用 available() 时返回了文件的总大小,但这在你的测试盒上没有发生。所以不要像java doc所说的那样依赖available()返回的数字。
-
available()的经典误用。 Javadoc 中有一个警告特别反对以这种方式使用它。
标签: java file inputstream