Java是否有一個簡單的方法來從InputStream中讀取一行而不進行緩衝? BufferedReader不適合我的需求,因爲我需要通過相同的連接重複傳輸文本和二進制數據,並且緩衝僅僅是阻礙。從InputStream讀取沒有緩衝的行
2
A
回答
0
你可以嘗試Scanner類:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
然而,這可以緩衝輸入,如果沒有換行符存在:
由於這種方法會繼續在輸入尋找搜索行 分隔符,如果沒有 行分隔符存在,它可能會緩存搜索要跳過的行的所有輸入。
+0
掃描儀緩衝輸入甚至超過換行符:( –
+0
'Scanner'確實緩衝區超過換行符,我有一個'StringR eader'有七條線和'Scanner'將它們全部緩衝在一起。 –
-1
4
最終它是直接從InputStream中直接讀取byte後的字節,而沒有包裝InputStream。一切我想,像掃描儀和InputStreamReader的,預讀(緩衝區)輸入:(
我想我錯過了一些情況下,像\ r。
public static String readLine(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int c;
for (c = inputStream.read(); c != '\n' && c != -1 ; c = inputStream.read()) {
byteArrayOutputStream.write(c);
}
if (c == -1 && byteArrayOutputStream.size() == 0) {
return null;
}
String line = byteArrayOutputStream.toString("UTF-8");
return line;
}
相關問題
- 1. 從InputStream讀取
- 2. 從磁盤緩衝讀取
- 3. 從緩衝區讀取C
- 4. 從InputStream中讀取
- 5. 套接字緩衝讀取器從來沒有準備好
- 6. 讀取TCP緩衝
- 7. 取消讀取從InputStream
- 8. 按行讀取緩衝區行內容
- 9. VHDL - 從VGA的幀緩衝讀取
- 10. 如何緩衝從sqlite3的讀取bitarrary
- 11. Java - 使用InputStream讀取行
- 12. 從Java進程讀取InputStream
- 13. expectJ - 從spawn.send()讀取InputStream()
- 14. 無法從HttpListenerRequest讀取InputStream
- 15. 從InputStream讀取字節塊
- 16. Bash讀取行緩衝區溢出
- 17. 如何從paquet讀取緩衝區(tftp)
- 18. 從插座讀取緩衝區
- 19. NodeJS從緩衝區讀取ASCII碼
- 20. avro php - 從緩衝區讀取
- 21. 讀取緩衝區C++
- 22. C++緩衝文件讀取
- 23. 未讀取uart緩衝區
- 24. boost asio讀取緩衝區
- 25. FileStream.Seek與緩衝讀取
- 26. AWS Lambda - 緩衝讀取器
- 27. 緩衝區沒有正確的行爲
- 28. 什麼讓文件讀取沒有緩衝區如此昂貴?
- 29. 我應該如何從緩衝讀取器讀取數據?
- 30. 無法從緩衝讀取器讀取android
通過二進制數據,你不必行,對嗎?如何識別您的數據是文本還是二進制? – belgther
我確實擁有它們。請求以描述它的文本行開始,有時後跟二進制數據。 – Ree
可能的重複:http://stackoverflow.com/questions/25215564/how-to-read-a-line-from-inputstream-without-buffering-the-input –