Как очистить BufferedReader в Java - PullRequest
4 голосов
/ 02 декабря 2009

Для чтения данных из моего последовательного порта я использую inputStream и использую BufferedReader для inputStream. После каждого чтения я хочу очистить BufferedReader. Под классом BufferedReader нет четкого метода. Я пытался использовать reset(), но это не сработало. Любые гики здесь, чтобы предложить что-нибудь по этой проблеме?

Ответы [ 2 ]

8 голосов
/ 02 декабря 2009

Просто для удобства чтения - это код, который вы разместили в комментарии (с дополнительным определением 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. Все, что вы прочитали из читателя, «взято из него», вы не увидите его снова при следующем чтении.

Таким образом, если вы действительно видите, что элементы снова появляются в Reader (и вы не «настроили» сам ридер), то, скорее всего, ваш источник данных отправляет те же данные снова и снова. Проверьте в этой области.

2 голосов
/ 22 февраля 2016

Попробуйте создать новый экземпляр буфера

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

Я использую сокетную связь, так что вот пример сокета. Я надеюсь, что помог тебе

...