在创建socket使用inputstream输入流,read()方法,如果调用的是available(),返回字节流的长度时,可能会返回0,或者其他数值,进行网络操作时往往出错,因为你调用available()方法时,对发发送的数据可能还没有到达,你得到的count是0。
网络传输中实现方式如下:
int readBytes = 0; byte[] buffer = new byte[1024];//1024可改成任何需要的值 int len = buffer.length; while (readBytes < len) { int read = inputStream.read(buffer, readBytes, len - readBytes); //判断是不是读到了数据流的末尾 ,防止出现死循环。 if (read == -1 || read < (len - readBytes)) { readBytes += read; break; } if(read == (len - readBytes)) { byte[] tmpBuffer = new byte[len * 2]; System.arraycopy(buffer, 0, tmpBuffer, 0, buffer.length); buffer = tmpBuffer; len = buffer.length; } readBytes += read; } byte[] endodedData = new byte[readBytes]; System.arraycopy(buffer, 0, endodedData, 0, readBytes); System.out.println(endodedData.length);
时间: 2024-10-16 22:55:13