簡體   English   中英

BufferedReader和InputStream錯誤讀取

[英]BufferedReader and InputStream wrong read

我從流中讀取數據時遇到大問題。

我有這樣的代碼:

 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
 String topic = bufferedReader.readLine();

 while ((bytesRead = inputStream.read(array, 0, array.length)) != -1) {
            // do something with array of bytes
        }

首先,我要獲取主題名稱,即以\\ n結尾的單個單詞。 接下來,我想讀取其余數據(我正在分塊讀取)。

問題是inputStream.read返回-1,因為所有內容都在bufferedReader中讀取。 我該如何解決?

繼續使用bufferedreader,不要從側面/下方讀取數據。 最后一個讀取器已緩沖,因此可以提前讀取,因此輸入流為空。

就像管道。 如果您開始在其中部鑽一個孔,則應該已經有油流過該新孔,因此您無法通過打開中部的管道來取回它。

您需要從BufferedReader中讀取所有數據。 包裝好inputStream之后,就無法輕松返回。 或者,您可以通過讀取char並檢查換行符來從inputStream中讀取第一行。

您正在使用InputStream實例化BufferedReader的對象,因此InputStream的內容已“保存”在BufferedReader中! 因此,像這樣繼續讀取您的BufferedReader對象:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String topic = bufferedReader.readLine();

while ((bytesRead = bufferedReader.read(array, 0, array.length)) != -1) {
        // do something with array of bytes
}

暫無
暫無

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

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