文档说不应该使用available()
确定尺寸的方法InputStream
。我怎样才能阅读一篇文章的全部内容InputStream
到字节数组中?
InputStream in; //assuming already present
byte[] data = new byte[in.available()];
in.read(data);//now data is filled with the whole content of the InputStream
我可以多次读取固定大小的缓冲区,但是随后,我必须将读取的数据合并到单个字节数组中,这对我来说是一个问题。
IMO 最简单的方法是使用Guava和它的ByteStreams class:
byte[] bytes = ByteStreams.toByteArray(in);
或者对于文件:
byte[] bytes = Files.toByteArray(file);
或者(如果您不想使用 Guava),您可以创建一个ByteArrayOutputStream,并重复读入字节数组并写入ByteArrayOutputStream
(让它处理调整大小),然后调用ByteArrayOutputStream.toByteArray().
请注意,无论您是否知道输入的长度,这种方法都有效 - 当然,前提是您有足够的内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)