2011-03-16 118 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(文件結束)。