2011-03-16 78 views
3

我想下面安卓:Outputstream.write - 问题

while (availableBytes > 0) { 

       bytesRead = inStream.read(tempData,0,tempData.length); 

       mmOutStream.write(tempData,0,bytesRead); 
       mmOutStream.flush(); 
       availableBytes = inStream.available(); 
    }/* End of availableBytes */ 

给出虽然写在大文件(500 KB),我得到IO异常为“正在进行的文件传输到远程蓝牙设备IOException:连接超时“12至15分钟后。当我发送的是< 100 KB的小文件时,我成功转移。 当文件传输正在进行时,我没有关闭套接字。 Android中是否存在任何限制,蓝牙套接字只能在某个固定的时间限制内激活?

请把你的这个

+0

无关,但我个人不会使用'available()'。我会继续阅读,直到'bytesRead'为-1。 – 2011-03-16 17:37:09

+0

我想我也面临类似的问题http://stackoverflow.com/questions/9748219/bluetooth-file-transfer-android#comment12400097_9748219 – shiraz 2012-03-17 12:50:34

回答

1

InputStream.available()的意见并不做你认为它的作用:

返回可以 读取的字节数(或跳过)从这个 输入流没有被这个输入的 流的下一个调用者的 阻塞。

正确的方法是直到你打字bytesRead == -1,写信号EOF(文件结束)。