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?
Antworten
Zu viele Anzeigen?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.
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
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".
0 Stimmen
Der im obigen Kommentar gepostete Code funktioniert bei mir, lässt sich aber nicht duplizieren. Hier ist mein InputStream inStream = new FileInputStream("c: \\LOGFILE.txt "); BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); while ((str = bufRd.readLine()) != null) { System.out.println(str); }