Dies mag flippig klingen, wird jedoch PrintStreamauf a OutputStreamund auf a PrintWritergedruckt 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 OutputStreamund einem Writer? Beide sind Streams, wobei der Hauptunterschied darin besteht, dass a OutputStreamein Stream von Bytes ist, während a Writerein Stream von Zeichen ist.
Wenn sich ein OutputStreammit 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 WriterSie normalerweise die zu verwendende Codierung an, um Plattformabhängigkeiten zu vermeiden.
Warum sollte man sich die Mühe machen, ein PrintStreamim 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, PrintStreamwenn es nur so weit verbreitet gewesen wäre. (Schließlich möchten Sie nicht, dass jeder Aufruf System.outeine veraltete API-Warnung generiert! Außerdem hätte das Ändern des Typs von PrintStreamauf PrintWriterin den Standardausgabestreams vorhandene Anwendungen beschädigt.)