IO流的使用问题
socket连接读取字节,
方法一:
public static byte[] readByteSources(InputStream in, int length) throws IOException { // 由于网络问题,数据可能不能即使到达 ByteArrayOutputStream baout = new ByteArrayOutputStream(); // 缓冲区2的倍数,64k byte[] buff = new byte[1]; int len = 0; long count = 0; while ((len = in.read(buff)) != -1) { count += len; baout.write(buff, 0, len); if (count >= length) { break; } } return baout.toByteArray(); }
方法二:
public static byte[] readIn(InputStream in,int length)throws IOException{ byte[] buff = new byte[length]; in.read(buff); return buff ; }
两个方法接收到的数组值不1样,这是为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
引用来自“yongk”的评论
方法二写的有问题,buff缓冲区长度是length,但in.read(buff)并不一定能把buff读满就返回了。所以跟方法一就不一样了。
方法1读的数组时对的,不过1个个读有点慢。
回复
那你有什么好办法没
感觉方法一好一些呢
方法二写的有问题,buff缓冲区长度是length,但in.read(buff)并不一定能把buff读满就返回了。所以跟方法一就不一样了。
难道是因为,网络问题,无法1下读太多数据?