5 Stimmen

Wie man BufferedReader in Java löscht

Um Daten von meiner seriellen Schnittstelle zu lesen, verwende ich einen inputStream und verwende BufferedReader für den inputStream. Nach jedem Lesen möchte ich die BufferedReader . Unter der Klasse BufferedReader Es gibt keine klare Methode. Ich habe versucht, die reset() aber es hat nicht funktioniert. Irgendwelche Geeks hier, die etwas zu diesem Problem vorschlagen können?

3 Stimmen

Was meinen Sie damit, den BufferReader zu löschen? Nach dem Schreiben können Sie den Puffer leeren - aber mir ist nicht bekannt, dass es notwendig ist, den Puffer nach dem Lesen zu löschen.

0 Stimmen

Sie wollen sagen, dass Sie die gepufferten Objekte auf Null setzen wollen?

0 Stimmen

DataInputStream inStream; BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); while((str = bufRd.readLine()) != null){ System.out.println(str); } Im obigen Code erhalte ich jedes Mal, wenn ich readLine() ausführe, auch den zuvor gelesenen Inhalt. Beim ersten Mal lese ich "abc" und beim zweiten Mal bekomme ich "abcdef". Ich brauche aber nur "def".

9voto

Andreas Dolk Punkte 110776

Nur zur besseren Lesbarkeit - dies ist der Code, den Sie im Kommentar geschrieben haben (mit der zusätzlichen Definition von str)

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

Ja, es sollte funktionieren. Es besteht keine Notwendigkeit, einen Stream oder einen Streamreader zu "löschen" oder "zurückzusetzen". Alles, was Sie aus dem Lesegerät lesen, wird "entnommen", Sie werden es beim nächsten Lesen nicht wieder sehen.

Wenn Sie also wirklich sehen, dass Elemente immer wieder auf dem Reader erscheinen (und Sie den Reader selbst nicht "angepasst" haben), dann ist es sehr wahrscheinlich, dass Ihre Datenquelle die gleichen Daten immer wieder sendet. Überprüfen Sie diesen Bereich.

3voto

robko Punkte 76

Versuchen Sie, eine neue Instanz von buffer zu erzeugen

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

Ich verwende Socket-Kommunikation, so ist hier Socket Beispiel. Ich hoffe, ich habe Ihnen geholfen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X