Streaming ( InputStream
dan OutputStream
) mentransfer data biner . Jika Anda ingin menulis string ke stream, Anda harus terlebih dahulu mengubahnya menjadi byte, atau dengan kata lain menyandikannya . Anda dapat melakukannya secara manual (seperti yang Anda sarankan) menggunakan String.getBytes(Charset)
metode ini, tetapi Anda harus menghindari String.getBytes()
metode tersebut, karena itu menggunakan pengodean default JVM, yang tidak dapat diprediksi dengan andal dengan cara portabel.
Namun, cara biasa untuk menulis data karakter ke stream adalah dengan membungkus stream dalam a Writer
, (seringkali a PrintWriter
), yang melakukan konversi untuk Anda ketika Anda memanggil metode write(String)
(atau print(String)
). Pembungkus yang sesuai untuk InputStreams adalah Pembaca .
PrintStream
adalah OutputStream
implementasi khusus dalam arti bahwa itu juga berisi metode yang secara otomatis menyandikan string (menggunakan penulis internal). Tapi itu masih aliran. Anda dapat dengan aman membungkus aliran Anda dengan seorang penulis, tidak peduli apakah itu adalah PrintStream
implementasi aliran atau lainnya. Tidak ada bahaya pengkodean ganda.
Contoh PrintWriter dengan OutputStream:
try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {
p.println("Hello");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}