2009-12-02 106 views
3

從我的串行端口讀取數據我正在使用inputStream並使用BufferedReader作爲inputStream。每次讀取後,我想清除BufferedReader。在類BufferedReader下沒有明確的方法。我試圖使用reset(),但它的工作。任何怪人都可以在這個問題上提出任何建議嗎?如何清除java中的BufferedReader

+3

你是什麼意思清除BufferReader?寫完之後,可以刷新緩衝區 - 但我不知道在讀完之後是否需要清除緩衝區。 – 2009-12-02 03:43:03

+0

你的意思是說你想使被緩衝的對象爲null? – GustyWind 2009-12-02 03:59:54

+0

DataInputStream inStream; BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); ((str = bufRd.readLine())!= null){System.out.println(str); } 在上面的代碼中,每次都執行readLine()我也得到以前讀取的內容。像第一次看到「abc」,然後第二次看到「abcdef」。但我只需要「def」。 – 2009-12-02 04:11:05

回答

6

只是爲了可讀性 - 這是你在註釋發佈的代碼(使用str的附加定義)

DataInputStream inStream = null; 
String str = null; 
BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); 
while((str = bufRd.readLine()) != null){ 
    System.out.println(str); 
} 

是的,它應該工作。無需「清除」或「重置」Stream或Streamreader。從讀者那裏讀取的所有內容都是「從中獲取的」,下次閱讀時您將不會再看到它。因此,如果您真的看到項目重新出現在閱讀器上(並且您還沒有「定製」閱讀器本身),那麼很可能您的數據源一次又一次地發送相同的數據。檢查該區域。

+0

非常感謝。我爲我工作。 – 2009-12-14 02:20:15

+0

readLine()已被棄用。 – 2014-09-24 10:04:36

2

儘量使緩衝

的新實例
BufferedReader br = new BufferedReader(newInputStreamReader(socket.getInputStream())); //create 
String read = br.readLine(); //read line 
br = new BufferedReader(newInputStreamReader(socket.getInputStream())); 

我使用socket通信所以這裏是插座的例子。 我希望我幫你