Dies mag flippig klingen, wird jedoch PrintStream
auf a OutputStream
und auf a PrintWriter
gedruckt Writer
. Ok, ich bezweifle, dass ich Punkte bekomme, um das Offensichtliche zu sagen. Aber es gibt noch mehr.
Also, was ist der Unterschied zwischen einem OutputStream
und einem Writer
? Beide sind Streams, wobei der Hauptunterschied darin besteht, dass a OutputStream
ein Stream von Bytes ist, während a Writer
ein Stream von Zeichen ist.
Wenn sich ein OutputStream
mit Bytes befasst, was ist dann PrintStream.print(String)
? Es konvertiert Zeichen in Bytes unter Verwendung der Standardplattformcodierung. Die Verwendung der Standardcodierung ist im Allgemeinen eine schlechte Sache, da sie beim Wechsel von einer Plattform auf eine andere zu Fehlern führen kann, insbesondere wenn Sie die Datei auf einer Plattform generieren und auf einer anderen verbrauchen.
Mit a geben Writer
Sie normalerweise die zu verwendende Codierung an, um Plattformabhängigkeiten zu vermeiden.
Warum sollte man sich die Mühe machen, ein PrintStream
im JDK zu haben, da die Hauptabsicht darin besteht, Zeichen und keine Bytes zu schreiben? PrintStream
älter als JDK 1.1, als Reader / Writer-Zeichenströme eingeführt wurden. Ich stelle mir vor, Sun wäre veraltet, PrintStream
wenn es nur so weit verbreitet gewesen wäre. (Schließlich möchten Sie nicht, dass jeder Aufruf System.out
eine veraltete API-Warnung generiert! Außerdem hätte das Ändern des Typs von PrintStream
auf PrintWriter
in den Standardausgabestreams vorhandene Anwendungen beschädigt.)