Braucht man hier keinen
<<< String s = bufferedReader.readLine(); >>>
weil man nur mit einem einzigen Buchstaben rechnet?
Falls das falsch ist, bitte erklären.
(Falls das richtig sein sollte, wäre ein kurzes "Jep" hilfreich.)
Danke!
Kein String für den BufferedReader erforderlich?
In der Diskussion
Kommentare (1)
- Beliebt
- Neu
- Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Thomas
8 November 2023, 10:38
Das kann man nicht mit ja oder nein beantworten, da beides nicht richtig wäre.
a) In- OutputStream ist konzipiert zum Lesen/ Schreiben von Bytes (allgemein Daten)
b) Reader/ Writer liest und schreibt Text. Diese Klassen nehmen also noch eine Umwandlung
vor (byte -> char). Und das ist komplex.
Z.B. liest ein Stream ein Byte 32, dann ist das einfach ein byte mit dem Wert 32, das als int an den Aufrufer zurückgegeben wird.
Ein Reader interpretiert die 32 zu einem Leerzeichen. Dazu sieht sich der Reader das gelesene byte an und vergleicht es mit einem mapping. Und wenn der key 32 ist, wird ein Leerzeichen zurückgegeben. By default verwendet Java UTF16. Jetzt schlag mich nicht tot wenn ich das nicht ganz korrekt in Erinnerung habe, aber sollte das führende Bit des gelesenen Bytes 0 sein, dann wird nur ein Byte gelesen und ausgewertet (das wird dann äquivalent zum alten ASCII-Code behandelt). Ist es eine 1, dann werden insgesamt 4 Bytes gelesen und ausgewertet. Mann kann auch beim lesen andere mappings angeben wie z.B. UTF-8. Da ist das noch etwas Platzsparender gelöst. Sind die führenden Bytes eine 10, werden 2 Bytes gelesen, bei 110 3 und bei 111 vier Bytes (und dann natürlich ausgewertet).
Langer Rede kurzer Sinn... Reader und Stream liefern andere Ergebnisse.
BufferedReader wiederum ist eine Convenience Klasse, die das Arbeiten mit Text (Reader) einfacher macht. Es kommt also kein Byte zurück sondern (default) UTF16 chars.
Noch ein weiterer Punkt:
readLine() verändert bzw. unterdrückt Daten aus dem darunterliegenden Stream. readLine() liest und sammelt chars bis es einen Zeilenumbruch finden (\n \r oder eine Kombination). Diese Zeichen werden nicht an den Caller zurückgegeben. Diese im File vorhandenen Daten liegen dann in deinem Programm nicht vor.
Ein Stream liest alles, Byte für Byte und interpretiert nichts.
0