0
我要讓藍牙socket通信發送文件的Android的FileInputStream讀取相同的數據,連續
我通過緩衝來自的FileInputStream讀取數據,並把它寫在其他輸出流。
但是這個程序連續讀取相同的數據,沒有讀下一個內容。
這裏是我的源
MSendArgWrapper wrapper = makeWrapper(sendArg, MSendArgWrapper.MODE_SWITCH_FILE);
try {
byte[] bytes = CUtility.serialize(wrapper);
outStream.write(bytes);
outStream.flush();
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
byte buf[] = new byte[1024];
do {
int numread = fis.read(buf);
if (numread <= 0)
break;
if(LOG_I_ENABLE)
Log.i(TAG, "[CCommunicateThread] Sending File... [" + numread + "] => " + buf.toString());
outStream.write(buf, 0, numread);
} while (true);
outStream.flush();
} catch (IOException e) {
e.printStackTrace();
onDisconnected();
}
這是日誌
08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected] 08-16 08:07:21.002 20001-21388/com.example.park.psyche I/CBluetoothManager﹕ [CCommunicateThread] Sending File... [1024] => [[email protected]
問題是什麼?
哦......我真是太笨。但我還有另一個問題。如果我發送7mb文件,則需要7秒。我怎樣才能加快藍牙文件傳輸? – JoonSoo
我懷疑它來自你的文件讀取實現。藍牙很慢,經常遇到這個問題。如果你想檢查它不是來自你的閱讀實現,把你的文件放在一個變量中,並進行一些速度測試。另外我不知道藍牙套接字,但如果你有7MB的數據,你可以優化你的緩衝區大小,甚至你的沖洗頻率,在這篇文章中解釋http://stackoverflow.com/questions/25689871/java-file-download-hangs 。這可能是有道理的,因爲Smarphone有更多的內存/性能限制比服務器 –
感謝您的幫助,但沒有辦法加快藍牙文件傳輸,我認爲... – JoonSoo