簡體   English   中英

Java-Sockets:InputStream.read()vs BufferedReader.read()

[英]Java-Sockets: InputStream.read() vs BufferedReader.read()

我正在閱讀Socket的InputStream。 因為我正在動態解析傳入的數據,所以我需要逐個字符地閱讀。

BufferedReader.read()InputStream.read()作用相同嗎? (假設BufferedReader是以InputStream為基礎構造的)

在單獨讀取每個字符時使用InputStream.read()更有效嗎? 還是有更好的方法嗎?

BufferedReader將從基礎Reader讀取多個字符。 InputStream提供字節。 所以他們正在研究2種不同的數據類型。 你是如何圍繞流包裝讀者的? 想必你會這樣:

 BufferedReader in
   = new BufferedReader(new InputStreamReader(socket));

在這種情況下,我要小心指定你的字符編碼。

從優化的角度來看,最好使用BufferedReader,因為它一次讀取幾千字節,你可以在需要時獲取每個字符(不一定強制執行新的IO讀取)。

InputStream類的read()方法是一個抽象方法。 它應該是InputStreamrReader我猜。 回到你的問題,InputStreamReader的read()方法和BufferesReader類都做同樣的事情 - 返回一個字符的ascii值,唯一的區別是BufferedReader使用所謂的緩沖,它允許我們減少我們讀取的頻率磁盤/ STDIN通過將塊復制到主存儲器,其中使用InputStreamReader每次調用read()都可能導致從磁盤/ STDIN讀取字節,轉換為字符,然后返回,這可能是非常低效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM