Akışlar ( InputStream
ve OutputStream
) ikili verileri aktarır . Bir akışa bir dize yazmak istiyorsanız, önce onu bayta dönüştürmeniz veya başka bir deyişle onu kodlamanız gerekir. Bunu String.getBytes(Charset)
yöntemi kullanarak manuel olarak (önerdiğiniz gibi) yapabilirsiniz , ancak yöntemden kaçınmalısınız String.getBytes()
, çünkü bu, taşınabilir bir şekilde güvenilir bir şekilde tahmin edilemeyen JVM'nin varsayılan kodlamasını kullanır.
Bir akışa karakter verileri yazmanın genel yolu, akışı, (veya ) yöntemini çağırdığınızda dönüştürme işlemini sizin için yapan bir Writer
, (genellikle a ) içine sarmaktır. InputStreams için karşılık gelen sarıcı bir Reader'dır .PrintWriter
write(String)
print(String)
PrintStream
OutputStream
dizeleri otomatik olarak kodlayan yöntemler içerdiği için özel bir uygulamadır (dahili olarak bir yazar kullanır). Ama yine de bir dere. Bir PrintStream
akış uygulaması ya da başka bir akış uygulaması olursa olsun akışınızı bir yazarla güvenle sarabilirsiniz . Çift kodlama tehlikesi yoktur.
OutputStream özellikli PrintWriter örneği:
try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {
p.println("Hello");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}