Bu ciddiyetsiz, ama gelebilir PrintStream
bir karşı baskılar OutputStream
ve PrintWriter
bir karşı baskılar Writer
. Tamam, bariz olanı ifade ettiğim için herhangi bir puan alacağımdan şüpheliyim. Ama dahası var.
Öyleyse, an OutputStream
ve a arasındaki fark Writer
nedir? Her ikisi de akışlardır, birincil fark a OutputStream
bir bayt akışı iken a Writer
bir karakter akışıdır.
Bir OutputStream
bayt 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.
PrintStream
Birincil amaç baytlar değil de karakterler yazmak olduğuna göre, JDK'da neden bir tane olması zahmetine girsin? PrintStream
Okuyucu / Yazar karakter akışları sunulduğunda JDK 1.1'den öncedir. Sun'ın, PrintStream
yalnı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.out
gelen türünü değiştirerek, aynı zamanda! Kaldırılmış bir API uyarı oluşturmak için PrintStream
için PrintWriter
mevcut uygulamaları kırık olurdu standart çıkış akışlarında.)