安卓:Outputstream.write - 问题

3
我试图将文件传输到远程蓝牙设备中,如下所示:
    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)时,写入过程中出现“IOException: Connection timed out”的IO异常,在12到15分钟后。当我发送小于100 KB的小文件时,传输成功。

在文件传输过程中,我没有关闭套接字。Android中是否有任何限制,蓝牙套接字只能保持活动状态一段固定的时间?

请给出你的看法。


不相关,但是个人不会使用available()。我会一直读取,直到bytesRead为-1。 - Jon Skeet
我认为我也面临着类似的问题 https://dev59.com/GGHVa4cB1Zd3GeqPoqX1#eT8DoYgBc1ULPQZFt9gS - shiraz
1个回答

1

InputStream.available()并不是你想象中的那样:

返回可以从此输入流读取(或跳过)而不会被下一个调用此输入流方法的调用者阻塞的字节数。

正确的方法是写入,直到你遇到bytesRead == -1,表示已到达文件结尾(EOF)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接