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. 從InputStream讀取
- 3. 行緩衝讀取在Perl
- 4. 從緩衝區讀取C
- 5. 從磁盤緩衝讀取
- 6. 讀取字符串緩衝讀取器的所有行
- 7. 從InputStream中讀取
- 8. 套接字緩衝讀取器從來沒有準備好
- 9. Java緩衝讀取器,逐行閱讀
- 10. 讀取TCP緩衝
- 11. InputStream緩衝區數據
- 12. 取消讀取從InputStream
- 13. 按行讀取緩衝區行內容
- 14. 從QTcpSocket讀取時的空緩衝區
- 15. 如何緩衝從sqlite3的讀取bitarrary
- 16. VHDL - 從VGA的幀緩衝讀取
- 17. 從java.net.Socket讀取InputStream有時會阻止
- 18. Bash讀取行緩衝區溢出
- 19. 從插座讀取緩衝區
- 20. 從NetworkStream中讀取損壞緩衝區
- 21. avro php - 從緩衝區讀取
- 22. C++ - 從緩衝區讀取數據
- 23. NodeJS從緩衝區讀取ASCII碼
- 24. 如何從paquet讀取緩衝區(tftp)
- 25. Python 2.6從緩衝區讀取
- 26. Java - 使用InputStream讀取行
- 27. 從InputStream讀取字節塊
- 28. Android MediaPlayer從InputStream中讀取
- 29. expectJ - 從spawn.send()讀取InputStream()
- 30. 從Java進程讀取InputStream
通過二進制數據,你不必行,對嗎?如何識別您的數據是文本還是二進制? – belgther
我確實擁有它們。請求以描述它的文本行開始,有時後跟二進制數據。 – Ree
可能的重複:http://stackoverflow.com/questions/25215564/how-to-read-a-line-from-inputstream-without-buffering-the-input –