1. OutputStreamkelas
Kami baru saja menjelajahi input stream. Saatnya berbicara tentang aliran keluaran.
Kelas OutputStreamadalah 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, FileOutputStreamdan sejenisnya.
Tapi kembali ke OutputStreamkelas. 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 InputStreamdata 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 lengthmerupakan 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-resourcesblok.
Contoh menyalin file
| Kode | Catatan |
|---|---|
|
InputStreamuntuk membaca dari sebuah file OutputStreamuntuk 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. Writerkelas
Kelasnya Writerpersis 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 offsetmenunjukkan indeks elemen pertama dari array, dan lengthmerupakan 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 offsetmenunjukkan indeks elemen pertama dari array, dan lengthmerupakan 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-resourcesblok.
Contoh program yang menyalin file teks:
| Kode | Catatan |
|---|---|
|
Readeruntuk membaca dari sebuah file Writeruntuk 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 |
StringWriterkelas
Ada kelas menarik lainnya yang mewarisi Writerkelas tersebut: disebut StringWriter. Ini berisi string yang bisa berubah - sebuah StringBufferobjek. Dan setiap kali Anda "menulis" sesuatu ke StringWriterobjek, teks ditambahkan ke buffer internalnya.
Contoh:
| Kode | Catatan |
|---|---|
|
Aliran karakter target ( StringWriter) dibuat String ditulis ke buffer di dalam StringWriterString A ditulis ke buffer di dalam StringWriterKonversi isi objek menjadi string |
Dalam hal ini, StringWriterkelas pada dasarnya adalah pembungkus kelas StringBuffer, tetapi StringWriterkelas tersebut adalah turunan dari Writerkelas aliran, dan dapat digunakan dalam rangkaian objek aliran. Ini adalah properti yang cukup berguna dalam praktiknya.
GO TO FULL VERSION