ich diesen Code in Java haben:eine Textzeile aus einem Eingangsstrom in Java Lesen Sie den Zeilenabschlusszeichen zu halten (s)
InputStreamReader isr = new InputStreamReader(getInputStream());
BufferedReader ir = new BufferedReader(isr);
String line;
while ((line = ir.readLine()) != null) {
//do stuff with "line"
}
Wenn der Eingangsstrom enthält folgendes: „Hallo \ nhey \ ryo \ r \ Ngood-Tag“, dann würde Zeilenvariablen jeder auf Iteration folgenden werden:
- hallo
- hey
- yo
- gut da y
Ich möchte eine Zeile zu einer Zeit lesen, aber ich möchte das Line-Abschlusszeichen halten (s):
- Hallo \ n
- He \ r
- yo \ r \ n
- guter Tag
Wie kann ich das tun? Gibt es einen gebrauchsfertigen Unterricht, den ich benutzen kann?
-
Update:
Hier ist, was ich versuche zu tun ist, warum muss ich die End-of-Line-Zeichen halten (und warum das EOL-Zeichen unterschiedlich sein können).
Ich lese eine POST-Anfrage. Sie bestehen aus reinen Textnachrichten, wobei die Zeilen immer mit \ r \ n enden (nach der Standardspezifikation). Die POST-Anforderung kann jedoch Binärdaten enthalten, die Bytes enthalten können, die wie Beendigungszeichen für Java Reader-Objekte aussehen.
In meinem Beispiel wird ein Bild hochgeladen. Die Bilddaten werden in einer einzigen Zeile gesendet. Die Binärdaten des Bildes enthalten jedoch Bytes, die der READER als "\ n", "\ r" oder manchmal "\ r \ n" interpretieren würde, wenn diese beiden Bytes zufällig nebeneinander liegen.
Ich muss die POST-Anfrage Zeile für Zeile lesen, weil es so funktioniert. Ich könnte, ich könnte alles lesen und dann die ganze Sache analysieren. Aber das ist nicht effizient, besonders wenn eine große Datei (zB 1024 MiB) hochgeladen wird.
Wenn Sie keine bessere Lösung finden können, können Sie Ihre 'readLine' mit' BufferedReader.read() 'in einer' while' Schleife implementieren. – pts
Ich hatte gehofft, dass diese sehr einfache Sache bereits erledigt war, man hätte gedacht, dass sie es so gemacht haben könnte, dass die readLine() - Methode des BufferedReaders einen booleschen Wert akzeptiert - wenn wahr, würde sie auch die Zeilentrennzeichen und einschließen wenn es falsch ist, würde es sich so verhalten, wie es im Moment ist. – Mike
Ist der besondere Endcharakter wichtig zu behalten? Weil das erste, was ich dachte, war nur ein '\ n' an die Zeile – TheLQ