1. OutputStream
kelas
Kami baru sahaja meneroka aliran input. Sudah tiba masanya untuk bercakap tentang aliran keluaran.
Kelas OutputStream
ialah kelas induk untuk semua kelas yang menyokong output bait. Ini ialah kelas abstrak yang tidak melakukan apa-apa dengan sendirinya, tetapi ia mempunyai kelas turunan untuk setiap kesempatan.
Kedengarannya sangat rumit. Untuk meletakkannya dengan lebih mudah, kelas ini beroperasi pada bait, dan bukan, sebagai contoh, aksara atau jenis data lain. Dan hakikat bahawa ia adalah abstrak bermakna bahawa kita biasanya tidak menggunakannya, sebaliknya salah satu daripada kelas keturunannya. Contohnya, FileOutputStream
dan seumpamanya.
Tetapi kembali ke OutputStream
kelas. Kelas ini mempunyai kaedah yang mesti dilaksanakan oleh semua kelas keturunannya. Berikut adalah yang utama:
Kaedah | Penerangan |
---|---|
|
Menulis satu bait (bukan an int ) ke strim. |
|
Menulis tatasusunan bait ke strim |
|
Menulis sebahagian daripada tatasusunan bait ke strim |
|
Menulis semua data yang disimpan dalam penimbal ke strim |
|
Menutup strim |
Apabila anda mencipta objek kelas yang mewarisi InputStream
, anda biasanya menentukan objek sumber yang InputStream
membaca data daripadanya. Apabila anda mencipta objek kelas yang mewarisi OutputStream
, anda juga biasanya menentukan objek sasaran atau strim yang data akan ditulis.
Mari kita lihat secara ringkas semua kaedah kelas OutputStream
:
write(int b)
kaedah
Kaedah ini menulis satu bait (bukan an int
) kepada aliran keluaran. Nilai yang dihantar dihantar ke bait, dan tiga bait pertama int dibuang.
write(byte[] buffer)
kaedah
Menulis tatasusunan bait yang diberikan kepada aliran keluaran. Itu sahaja.
write(byte[] buffer, int offset, int length)
kaedah
Menulis sebahagian daripada tatasusunan bait yang diluluskan kepada aliran keluaran. Pembolehubah mengimbangi menunjukkan indeks elemen pertama tatasusunan, dan length
ialah panjang subset yang akan ditulis.
flush()
kaedah
Kaedah ini flush()
digunakan untuk memaksa mana-mana data yang berpotensi buffer dalam aliran semasa untuk ditulis ke aliran sasaran. Ini berkaitan apabila menggunakan penimbalan dan/atau objek berbilang aliran yang disusun dalam rantai.
close()
kaedah
Menulis sebarang data tidak bertulis kepada objek sasaran. Kaedah close()
tidak perlu dipanggil jika anda menggunakan try-with-resources
blok.
Contoh menyalin fail
Kod | Catatan |
---|---|
|
InputStream untuk membaca dari fail OutputStream untuk menulis ke fail Penampan di mana kita akan membaca data Selagi terdapat data dalam aliran Baca data ke dalam penimbal Tulis data dari penimbal ke aliran kedua |
2. Writer
kelas
Kelas Writer
adalah sama dengan OutputStream
kelas, tetapi hanya satu perbezaan sekali lagi: ia berfungsi dengan aksara ( char
) dan bukannya bait.
Ini ialah kelas abstrak: anda tidak boleh mencipta objek kelas Writer
. Matlamat utamanya adalah untuk menjadi kelas induk biasa untuk ratusan kelas keturunan dan memberi mereka kaedah biasa untuk bekerja dengan aliran aksara.
Kaedah kelas Writer
(dan semua kelas keturunannya):
Kaedah | Penerangan |
---|---|
|
Menulis satu aksara (bukan satu int ) ke strim. |
|
Menulis tatasusunan aksara ke strim |
|
Menulis sebahagian daripada tatasusunan aksara ke strim |
|
Menulis rentetan ke strim |
|
Menulis sebahagian daripada rentetan kepada strim |
|
Menulis semua data yang disimpan dalam penimbal ke strim |
|
Menutup strim |
Kaedah ini sangat serupa dengan kaedah kelas OutputStream
, tetapi ia berfungsi dengan aksara dan bukannya bait.
Penerangan kaedah:
write(int b)
kaedah
Kaedah ini menulis satu aksara ( char
— bukan an int
) kepada aliran keluaran. Nilai yang diluluskan dibuang ke a char
, dan dua bait pertama dibuang.
write(char[] buffer)
kaedah
Menulis tatasusunan aksara yang diberikan kepada aliran keluaran.
write(char[] buffer, int offset, int length)
kaedah
Menulis sebahagian daripada tatasusunan aksara yang diluluskan ke aliran keluaran. Pembolehubah offset
menunjukkan indeks elemen pertama tatasusunan, dan length
ialah panjang subset yang akan ditulis.
write(String str)
kaedah
Menulis rentetan yang diberikan kepada aliran keluaran.
write(String str, int offset, int length)
kaedah
Menulis sebahagian daripada rentetan yang diberikan kepada aliran keluaran: rentetan itu ditukar kepada tatasusunan aksara. Pembolehubah offset
menunjukkan indeks elemen pertama tatasusunan, dan length
ialah panjang subset yang akan ditulis.
flush()
kaedah
Kaedah ini flush()
digunakan untuk memaksa mana-mana data yang berpotensi buffer dalam aliran semasa untuk ditulis ke aliran sasaran. Ini berkaitan apabila menggunakan penimbalan dan/atau objek berbilang aliran yang disusun dalam rantai.
close()
kaedah
Menulis sebarang data tidak bertulis kepada objek sasaran. Kaedah close()
tidak perlu dipanggil jika anda menggunakan try-with-resources
blok.
Contoh program yang menyalin fail teks:
Kod | Catatan |
---|---|
|
Reader untuk membaca dari fail Writer untuk menulis ke fail Penampan di mana kita akan membaca data Selagi terdapat data dalam aliran Baca data ke dalam penimbal Tulis data dari penimbal ke aliran kedua |
StringWriter
kelas
Terdapat satu lagi kelas menarik yang mewarisi Writer
kelas: ia dipanggil StringWriter
. Ia mengandungi rentetan boleh ubah — StringBuffer
objek. Dan setiap kali anda "menulis" sesuatu pada StringWriter
objek, teks itu hanya ditambahkan pada penimbal dalamannya.
Contoh:
Kod | Catatan |
---|---|
|
Strim aksara sasaran ( StringWriter ) dicipta Rentetan ditulis kepada penimbal di dalam StringWriter Rentetan ditulis kepada penimbal di dalam StringWriter Menukar kandungan objek kepada rentetan |
Dalam kes ini, StringWriter
kelas pada asasnya ialah pembalut ke atas StringBuffer
kelas, tetapi StringWriter
kelas itu adalah keturunan Writer
kelas aliran, dan ia boleh digunakan dalam rantaian objek aliran. Ini adalah harta yang cukup berguna dalam amalan.
GO TO FULL VERSION