1. OutputStream
kelas
Kami baru saja menjelajahi input stream. Saatnya berbicara tentang aliran keluaran.
Kelas OutputStream
adalah kelas induk untuk semua kelas yang mendukung output byte. Ini adalah kelas abstrak yang tidak melakukan apa-apa sendiri, tetapi memiliki kelas turunan untuk setiap kesempatan.
Kedengarannya sangat rumit. Sederhananya, kelas ini beroperasi pada byte, dan bukan, misalnya, karakter atau tipe data lainnya. Dan fakta bahwa itu abstrak berarti kita biasanya tidak menggunakannya, melainkan salah satu kelas turunannya. Misalnya, FileOutputStream
dan sejenisnya.
Tapi kembali ke OutputStream
kelas. Kelas ini memiliki metode yang harus diterapkan oleh semua kelas turunannya. Inilah yang utama:
Metode | Keterangan |
---|---|
|
Menulis satu byte (bukan int ) ke aliran. |
|
Menulis array byte ke aliran |
|
Menulis bagian dari array byte ke aliran |
|
Menulis semua data yang disimpan dalam buffer ke aliran |
|
Menutup aliran |
Saat Anda membuat objek dari kelas yang mewarisi InputStream
, Anda biasanya menentukan objek sumber tempat InputStream
data dibaca. Saat Anda membuat objek dari kelas yang mewarisi OutputStream
, Anda juga biasanya menentukan objek target atau aliran data yang akan ditulis.
Mari kita bahas secara singkat semua metode kelas OutputStream
:
write(int b)
metode
Metode ini menulis satu byte (bukan int
) ke aliran keluaran. Nilai yang diteruskan dilemparkan ke satu byte, dan tiga byte pertama dari int dibuang.
write(byte[] buffer)
metode
Menulis array byte yang diberikan ke aliran output. Itu dia.
write(byte[] buffer, int offset, int length)
metode
Menulis sebagian dari array byte yang diteruskan ke aliran keluaran. Variabel offset menunjukkan indeks elemen pertama dari array, dan length
merupakan panjang subset yang akan ditulis.
flush()
metode
Metode ini flush()
digunakan untuk memaksa data apa pun yang berpotensi disangga dalam aliran saat ini untuk ditulis ke aliran target. Ini relevan saat menggunakan buffering dan/atau beberapa objek aliran yang diatur dalam sebuah rantai.
close()
metode
Menulis data tidak tertulis apa pun ke objek target. Metode close()
tidak perlu dipanggil jika Anda menggunakan try-with-resources
blok.
Contoh menyalin file
Kode | Catatan |
---|---|
|
InputStream untuk membaca dari sebuah file OutputStream untuk menulis ke sebuah file Buffer dimana kita akan membaca data Selama ada data di dalam stream Membaca data ke dalam buffer Menulis data dari buffer ke stream kedua |
2. Writer
kelas
Kelasnya Writer
persis sama dengan kelasnya OutputStream
, tetapi sekali lagi hanya ada satu perbedaan: ia bekerja dengan karakter ( char
) bukan byte.
Ini adalah kelas abstrak: Anda tidak dapat membuat objek kelas Writer
. Tujuan utamanya adalah menjadi kelas induk umum untuk ratusan kelas keturunan dan memberi mereka metode umum untuk bekerja dengan aliran karakter.
Metode kelas Writer
(dan semua kelas turunannya):
Metode | Keterangan |
---|---|
|
Menulis satu karakter (bukan int ) ke aliran. |
|
Menulis array karakter ke aliran |
|
Menulis bagian dari array karakter ke aliran |
|
Menulis string ke aliran |
|
Menulis bagian dari string ke aliran |
|
Menulis semua data yang disimpan dalam buffer ke aliran |
|
Menutup aliran |
Metodenya sangat mirip dengan metode kelas OutputStream
, tetapi mereka bekerja dengan karakter, bukan byte.
Deskripsi metode:
write(int b)
metode
Metode ini menulis satu karakter ( char
— bukan int
) ke aliran keluaran. Nilai yang diteruskan dilemparkan ke a char
, dan dua byte pertama dibuang.
write(char[] buffer)
metode
Menulis larik karakter yang diberikan ke aliran keluaran.
write(char[] buffer, int offset, int length)
metode
Menulis sebagian dari array karakter yang diteruskan ke aliran output. Variabel offset
menunjukkan indeks elemen pertama dari array, dan length
merupakan panjang subset yang akan ditulis.
write(String str)
metode
Menulis string yang diberikan ke aliran keluaran.
write(String str, int offset, int length)
metode
Menulis sebagian dari string yang diberikan ke aliran output: string diubah menjadi array karakter. Variabel offset
menunjukkan indeks elemen pertama dari array, dan length
merupakan panjang subset yang akan ditulis.
flush()
metode
Metode ini flush()
digunakan untuk memaksa data apa pun yang berpotensi disangga dalam aliran saat ini untuk ditulis ke aliran target. Ini relevan saat menggunakan buffering dan/atau beberapa objek aliran yang diatur dalam sebuah rantai.
close()
metode
Menulis data tidak tertulis apa pun ke objek target. Metode close()
tidak perlu dipanggil jika Anda menggunakan try-with-resources
blok.
Contoh program yang menyalin file teks:
Kode | Catatan |
---|---|
|
Reader untuk membaca dari sebuah file Writer untuk menulis ke sebuah file Buffer dimana kita akan membaca data Selama ada data di dalam stream Membaca data ke dalam buffer Menulis data dari buffer ke stream kedua |
StringWriter
kelas
Ada kelas menarik lainnya yang mewarisi Writer
kelas tersebut: disebut StringWriter
. Ini berisi string yang bisa berubah - sebuah StringBuffer
objek. Dan setiap kali Anda "menulis" sesuatu ke StringWriter
objek, teks ditambahkan ke buffer internalnya.
Contoh:
Kode | Catatan |
---|---|
|
Aliran karakter target ( StringWriter ) dibuat String ditulis ke buffer di dalam StringWriter String A ditulis ke buffer di dalam StringWriter Konversi isi objek menjadi string |
Dalam hal ini, StringWriter
kelas pada dasarnya adalah pembungkus kelas StringBuffer
, tetapi StringWriter
kelas tersebut adalah turunan dari Writer
kelas aliran, dan dapat digunakan dalam rangkaian objek aliran. Ini adalah properti yang cukup berguna dalam praktiknya.
GO TO FULL VERSION