inputStream.read(byteArray) != -1 死循环问题

while ((len = inputStream.read(byteArray)) != -1){
    message = new String(byteArray,0,len);
    System.out.println(len);
}

类似于这种inputStream读取完数据之后,但是不跳出循环的问题,首先先看下你的inputStream是不是scoket通信的,如果是就将你的输入方的socket关闭就好

// 这是输入方  创建socket对象
Socket socket = new Socket(ip,port);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(("hello 我是中国人 heihei !11").getBytes());
outputStream.flush();
outputStream.close();

如果不是,是文件的的话,一般不会出现这种问题,如果出现了,可以这样:

int fileLength = conn.getContentLength();//获取到文件流的总大小

int downloadLength = 0;// 定义一个已经读取的大小

然后在循环里累计:

while ((size = inputStream.read(buf)) != -1) {

downloadLength += size;

outputStream.write(buf, 0, size);

if(fileLength == downloadLength){

//防止最后一次读取的时候,一直阻塞

break;

}

}

这样就可以了。

经验分享 程序员 微信小程序 职场和发展