今天写一个简单的文件传输问题,没想到弄了好长时间,结果发现是flush的问题如下: byte[] data = new byte[256];
while((receiveLen < fileLen))
{
read = (int) ( fileLen - receiveLen > data.length ? data.length : fileLen - receiveLen );
inputStream.read(data,0,read); //inputStream从服务器端接收文件的字节流
bufferOutputStream.write(data,0,read); // 本地客户端写到文件的缓冲输出流
receiveLen += read;
//System.out.println(receiveLen);
}
bufferOutputStream.flush();然后发现把System.out.println那一句注释掉程序就陷在循环里面了,不注释这一句就没问题。。
后来我把 bufferOutputStream.flush();移到循环里面就OK了现在想搞清楚问题的实质,我一直以为java IO阻塞只是对于read操作而言,write操作也有阻塞么?请大家帮忙解惑一下~~~
while((receiveLen < fileLen))
{
read = (int) ( fileLen - receiveLen > data.length ? data.length : fileLen - receiveLen );
inputStream.read(data,0,read); //inputStream从服务器端接收文件的字节流
bufferOutputStream.write(data,0,read); // 本地客户端写到文件的缓冲输出流
receiveLen += read;
//System.out.println(receiveLen);
}
bufferOutputStream.flush();然后发现把System.out.println那一句注释掉程序就陷在循环里面了,不注释这一句就没问题。。
后来我把 bufferOutputStream.flush();移到循环里面就OK了现在想搞清楚问题的实质,我一直以为java IO阻塞只是对于read操作而言,write操作也有阻塞么?请大家帮忙解惑一下~~~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货