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样,这是为什么?
难道是因为,网络问题,无法1下读太多数据?
######方法二写的有问题,buff缓冲区长度是length,但in.read(buff)并不一定能把buff读满就返回了。所以跟方法一就不一样了。
######感觉方法一好一些呢
######回复 @染墨若流云 : 暂时没有######回复 @够劲儿 : 那你有什么好办法没######方法1读的数组时对的,不过1个个读有点慢。######方法二写的有问题,buff缓冲区长度是length,但in.read(buff)并不一定能把buff读满就返回了。所以跟方法一就不一样了。
嗯,我对比了下,两个byte[]不相同,第2个也不能读满。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。