1. OutputStream
kelas
Kita bubar njelajah aliran input. Iku wektu kanggo pirembagan bab output stream.
Kelas kasebut OutputStream
minangka kelas induk kanggo kabeh kelas sing ndhukung output byte. Iki minangka kelas abstrak sing ora nindakake apa-apa, nanging nduweni kelas turunan kanggo saben kesempatan.
Muni rumit banget. Kanggo sijine iku luwih gampang, kelas iki makaryakke ing bita, lan ora, contone, karakter utawa jinis data liyane. Lan kasunyatan sing abstrak tegese kita biasane ora nggunakake, nanging salah siji saka kelas turunane. Contone, FileOutputStream
lan liya-liyane.
Nanging bali menyang OutputStream
kelas. Kelas iki nduweni metode sing kudu ditindakake kabeh kelas turunane. Ing ngisor iki sing utama:
Metode | Katrangan |
---|---|
|
Nulis siji bait (ora an int ) menyang stream. |
|
Nulis array bita menyang stream |
|
Nulis bagean saka Uploaded byte menyang stream |
|
Nulis kabeh data sing disimpen ing buffer menyang stream |
|
Nutup stream |
Nalika nggawe obyek saka kelas sing oleh warisan InputStream
, sampeyan biasane nemtokake obyek sumber sing InputStream
data diwaca saka. Nalika nggawe obyek saka kelas sing oleh warisan OutputStream
, sampeyan uga biasane nemtokake obyek target utawa stream sing data bakal ditulis kanggo.
Ayo goleki kabeh metode kelas kanthi ringkes OutputStream
:
write(int b)
cara
Cara iki nulis siji bait (ora an int
) menyang stream output. Nilai sing dilewati dibuwang menyang bait, lan telung bait pertama int dibuwang.
write(byte[] buffer)
cara
Nulis Uploaded diwenehi saka bita menyang stream output. Mekaten.
write(byte[] buffer, int offset, int length)
cara
Nulis bagean saka Uploaded liwat bita menyang stream output. Variabel offset nuduhake indeks saka unsur pisanan saka array, lan length
dawa subset bakal ditulis.
flush()
cara
Cara iki flush()
digunakake kanggo meksa data apa wae sing duweni potensi buffer ing stream saiki supaya ditulis menyang stream target. Iki cocog nalika nggunakake buffering lan / utawa sawetara obyek stream disusun ing chain.
close()
cara
Nulis data sing ora ditulis menyang obyek target. Cara kasebut close()
ora perlu diarani yen sampeyan nggunakake try-with-resources
blok.
Tuladha nyalin file
Kode | Cathetan |
---|---|
|
InputStream kanggo maca saka file OutputStream kanggo nulis menyang file Buffer ing ngendi kita bakal maca data Anggere ana data ing stream Waca data menyang buffer Tulis data saka buffer menyang stream kapindho |
2. Writer
kelas
Kelas Writer
iku persis padha karo OutputStream
kelas, nanging mung siji prabédan sepisan maneh: dianggo karo karakter ( char
) tinimbang bita.
Iki kelas abstrak: sampeyan ora bisa nggawe obyek saka Writer
kelas. Tujuan utamane yaiku dadi kelas induk sing umum kanggo atusan kelas turunan lan menehi cara umum kanggo nggarap aliran karakter.
Metode kelas Writer
(lan kabeh kelas turunane):
Metode | Katrangan |
---|---|
|
Nulis siji karakter (ora an int ) menyang stream. |
|
Nulis array karakter menyang stream |
|
Nulis bagean saka macem-macem karakter menyang stream |
|
Nulis string menyang stream |
|
Nulis bagéan saka senar menyang stream |
|
Nulis kabeh data sing disimpen ing buffer menyang stream |
|
Nutup stream |
Cara kasebut meh padha karo metode kelas OutputStream
, nanging bisa digunakake kanthi karakter tinimbang bita.
Deskripsi metode:
write(int b)
cara
Cara iki nulis karakter siji ( char
- ora an int
) menyang stream output. Nilai liwati dibuwang menyang a char
, lan rong bita pisanan dibuwak.
write(char[] buffer)
cara
Nulis array diwenehi karakter menyang stream output.
write(char[] buffer, int offset, int length)
cara
Nulis bagean saka Uploaded liwat karakter kanggo stream output. Variabel kasebut offset
nuduhake indeks unsur pisanan saka array, lan length
dawa subset sing bakal ditulis.
write(String str)
cara
Nulis string diwenehi menyang stream output.
write(String str, int offset, int length)
cara
Nulis bagean saka senar diwenehi kanggo stream output: senar diowahi kanggo Uploaded karakter. Variabel kasebut offset
nuduhake indeks unsur pisanan saka array, lan length
dawa subset sing bakal ditulis.
flush()
cara
Cara iki flush()
digunakake kanggo meksa data apa wae sing duweni potensi buffer ing stream saiki supaya ditulis menyang stream target. Iki cocog nalika nggunakake buffering lan / utawa sawetara obyek stream disusun ing chain.
close()
cara
Nulis data sing ora ditulis menyang obyek target. Cara kasebut close()
ora perlu diarani yen sampeyan nggunakake try-with-resources
blok.
Conto program sing nyalin file teks:
Kode | Cathetan |
---|---|
|
Reader kanggo maca saka file Writer kanggo nulis menyang file Buffer ing ngendi kita bakal maca data Anggere ana data ing stream Waca data menyang buffer Tulis data saka buffer menyang stream kapindho |
StringWriter
kelas
Ana kelas menarik liyane sing marisi Writer
kelas kasebut: diarani StringWriter
. Isine string mutable - StringBuffer
obyek. Lan saben-saben sampeyan "nulis" soko kanggo StringWriter
obyek, teks mung ditambahake menyang buffer internal.
Tuladha:
Kode | Cathetan |
---|---|
|
Aliran karakter target ( StringWriter ) digawe Senar ditulis menyang buffer ing jero StringWriter Senar ditulis menyang buffer ing StringWriter Ngonversi isi obyek dadi senar. |
Ing kasus iki, StringWriter
kelas ateges pambungkus liwat StringBuffer
kelas, nanging StringWriter
kelas iku turunan saka Writer
kelas stream, lan bisa digunakake ing rentengan obyek stream. Iki minangka properti sing migunani banget ing praktik.
3. PrintStream
kelas
Kelas stream output uga bisa dilebokake ing rantai kanthi aliran perantara sing nulis data menyang aliran target sing diterusake. Tampilan umum saka interaksi aliran kasebut katon kaya mangkene:
Sing paling menarik lan serba guna saka kabeh aliran output penengah yaiku PrintStream
. Wis puluhan cara lan minangka akeh minangka 12 konstruktor.
Kelas PrintStream
marisi FilterOutputStream
kelas, sing marisi OutputStream
. Tegese PrintStream
kelas kasebut nduweni kabeh metode kelas induk saliyane metode dhewe . Ing ngisor iki sing paling menarik:
Metode | Katrangan |
---|---|
|
Ngonversi obyek liwati menyang string lan output menyang stream target. |
|
Ngonversi obyek liwati menyang string lan output menyang stream target. Nambahake break baris ing pungkasan |
|
Output karakter baris break menyang stream target |
|
Nggawe lan ngasilake senar adhedhasar senar format lan argumen sing dilewati; padha karo String.format() cara |
Lan ing ngendi puluhan metode kasebut, sampeyan takon?
Ya, ana akeh varian print()
lan println()
metode kanthi paramèter sing beda. Padha bisa diringkes ing tabel iki.
Kita ora bakal nyilem babagan metode iki, amarga sampeyan wis ngerti. Apa sampeyan bisa ngira apa sing dakkarepake?
Eling System.out.println()
? Nanging bisa ditulis ing rong baris:
Kode | Output konsol |
---|---|
|
|
Printah favorit kita yaiku telpon kanggo metode ing variabel statis kelas . Lan jinis variabel iki yaiku .System.out.println()
println()
out
System
PrintStream
Ing pirang-pirang level CodeGym, lan meh kabeh tugas, sampeyan wis nelpon metode kelas PrintStream
tanpa ngerti!
Panggunaan praktis
Jawa nduweni kelas menarik sing diarani ByteArrayOutputStream
, yaiku array byte sing berkembang kanthi dinamis sing diwarisake OutputStream
.
Objek ByteArrayOutputStream
lan PrintStream
obyek bisa dirantai kaya iki:
Kode | Katrangan |
---|---|
|
Nggawe buffer nulis ing memori Bungkus buffer ing PrintStream obyek Tulis data menyang console Ngonversi array menyang senar! Output konsol:
|
GO TO FULL VERSION