Bu ciddiyetsiz, ama gelebilir PrintStreambir karşı baskılar OutputStreamve PrintWriterbir karşı baskılar Writer. Tamam, bariz olanı ifade ettiğim için herhangi bir puan alacağımdan şüpheliyim. Ama dahası var.
Öyleyse, an OutputStreamve a arasındaki fark Writernedir? Her ikisi de akışlardır, birincil fark a OutputStreambir bayt akışı iken a Writerbir karakter akışıdır.
Bir OutputStreambayt ile ilgileniyorsa, ne olacak PrintStream.print(String)? Varsayılan platform kodlamasını kullanarak karakterleri bayta dönüştürür. Varsayılan kodlamayı kullanmak genellikle kötü bir şeydir, çünkü bir platformdan diğerine geçerken hatalara yol açabilir, özellikle de dosyayı bir platformda oluşturuyor ve başka bir platformda kullanıyorsanız.
A ile Writer, herhangi bir platform bağımlılığından kaçınarak, genellikle kullanılacak kodlamayı belirtirsiniz.
PrintStreamBirincil amaç baytlar değil de karakterler yazmak olduğuna göre, JDK'da neden bir tane olması zahmetine girsin? PrintStreamOkuyucu / Yazar karakter akışları sunulduğunda JDK 1.1'den öncedir. Sun'ın, PrintStreamyalnızca bu kadar yaygın olarak kullanıldığı gerçeğinden ötürü vazgeçeceğini hayal ediyorum . (Sonuçta, her çağrıyı istemem System.outgelen türünü değiştirerek, aynı zamanda! Kaldırılmış bir API uyarı oluşturmak için PrintStreamiçin PrintWritermevcut uygulamaları kırık olurdu standart çıkış akışlarında.)