1. OutputStreamkelas
Kita bubar njelajah aliran input. Iku wektu kanggo pirembagan bab output stream.
Kelas kasebut OutputStreamminangka 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, FileOutputStreamlan liya-liyane.
Nanging bali menyang OutputStreamkelas. 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 InputStreamdata 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 lengthdawa 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-resourcesblok.
Tuladha nyalin file
| Kode | Cathetan |
|---|---|
|
InputStreamkanggo maca saka file OutputStreamkanggo 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. Writerkelas
Kelas Writeriku persis padha karo OutputStreamkelas, nanging mung siji prabédan sepisan maneh: dianggo karo karakter ( char) tinimbang bita.
Iki kelas abstrak: sampeyan ora bisa nggawe obyek saka Writerkelas. 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 offsetnuduhake indeks unsur pisanan saka array, lan lengthdawa 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 offsetnuduhake indeks unsur pisanan saka array, lan lengthdawa 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-resourcesblok.
Conto program sing nyalin file teks:
| Kode | Cathetan |
|---|---|
|
Readerkanggo maca saka file Writerkanggo 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 |
StringWriterkelas
Ana kelas menarik liyane sing marisi Writerkelas kasebut: diarani StringWriter. Isine string mutable - StringBufferobyek. Lan saben-saben sampeyan "nulis" soko kanggo StringWriterobyek, teks mung ditambahake menyang buffer internal.
Tuladha:
| Kode | Cathetan |
|---|---|
|
Aliran karakter target ( StringWriter) digawe Senar ditulis menyang buffer ing jero StringWriterSenar ditulis menyang buffer ing StringWriterNgonversi isi obyek dadi senar. |
Ing kasus iki, StringWriterkelas ateges pambungkus liwat StringBufferkelas, nanging StringWriterkelas iku turunan saka Writerkelas stream, lan bisa digunakake ing rentengan obyek stream. Iki minangka properti sing migunani banget ing praktik.
3. PrintStreamkelas
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 PrintStreammarisi FilterOutputStreamkelas, sing marisi OutputStream. Tegese PrintStreamkelas 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()outSystemPrintStream
Ing pirang-pirang level CodeGym, lan meh kabeh tugas, sampeyan wis nelpon metode kelas PrintStreamtanpa ngerti!
Panggunaan praktis
Jawa nduweni kelas menarik sing diarani ByteArrayOutputStream, yaiku array byte sing berkembang kanthi dinamis sing diwarisake OutputStream.
Objek ByteArrayOutputStreamlan PrintStreamobyek bisa dirantai kaya iki:
| Kode | Katrangan |
|---|---|
|
Nggawe buffer nulis ing memori Bungkus buffer ing PrintStreamobyek Tulis data menyang console Ngonversi array menyang senar! Output konsol: |
GO TO FULL VERSION