1. InputStreamReader
kelas
Fitur stream liyane sing menarik yaiku sampeyan bisa nggabungake pirang-pirang aliran dadi rantai . A stream bisa maca data ora mung saka sumber data internal, nanging uga saka stream liyane .
Iki minangka mekanisme sing kuat banget ing Jawa, sing ndadekake bisa nggawe skenario maca data sing rumit kanthi nyambungake siji stream menyang liyane. Skema kaya iki katon kaya iki:
Nalika program maca data saka stream data, stream data banjur maca data saka sumber data sawijining, kang stream data liyane utawa file, contone.
Apa maneh, saben aliran data ora mung maca lan menehi data, nanging uga bisa ngowahi utawa nindakake macem-macem operasi. Conto apik saka "stream penengah" kuwi kelas InputStreamReader
.
Kita wis ngerti kelas sing diarani FileReader
- yaiku Reader
sing maca data saka file. Lan saka ngendi InputStreamReader
entuk data? Sing bener - saka InputStream
.
Nalika nggawe InputStreamReader
obyek, sampeyan kudu pass ing InputStream
obyek utawa salah siji saka kelas turunane. Tuladha:
String src = "c:\\projects\\log.txt";
FileInputStream input = new FileInputStream(src);
InputStreamReader reader = new InputStreamReader(input);
Kelas InputStreamReader
wis kabeh cara sing Reader
kelas wis, lan padha bisa digunakake ing cara sing padha.
Bentenipun utama antarane InputStreamReader
kelas lan, ngomong, FileReader
ngendi padha maca data saka. FileReader
maca data saka file (duh - mulane diarani FileReader
), nanging InputStreamReader
maca data saka file InputStream
.
Nalika maca karakter saka FileReader
obyek nggunakake read()
cara, banjur maca rong bait saka file ing disk lan bali minangka chars
.
Nalika sampeyan maca karakter saka InputStreamReader
obyek nggunakake read()
cara, banjur maca rong bita saka FileInputStream
obyek liwati, kang siji maca data saka file. Asil punika chain saka telpon kanggo read()
cara.
2. BufferedReader
kelas
Kelas liyane sing menarik sing umume sampeyan gunakake yaiku BufferedReader
. Iki uga minangka "stream penengah" sing maca data saka stream liyane.
Kaya jenenge, BufferedReader
kelas kasebut minangka subkelas Reader
lan ngidini sampeyan maca karakter . Nanging sing paling menarik yaiku sampeyan uga kudu menehi sumber data ing wangun stream saka karakter sing bisa diwaca , yaiku stream sing menehi warisan Reader
kelas.
Apa gunane? Ora kaya InputStreamReader
, BufferedReader
kelas ora ngowahi bita dadi karakter: ora ngowahi apa wae. Nanging, buffer data .
Nalika program maca karakter siji saka BufferedReader
obyek, obyek maca Uploaded akeh karakter saka sumber stream bebarengan. Lan nyimpen ing njero.
Nalika karakter sabanjuré diwaca saka obyek BufferedReader
, iku mung njupuk karakter sabanjuré saka array buffer internal lan bali tanpa ngakses sumber data. Mung nalika kabeh karakter ing buffer wis digunakake munggah, iku maca ing Uploaded gedhe liyane karakter.
Kelas BufferedReader
uga nduweni cara sing migunani banget — String readLine()
, sing ngidini sampeyan maca kabeh senar data saka aliran sumber sekaligus. Sampeyan bisa nggunakake cara iki kanggo, ngomong, maca file lan nampilake isi ing layar baris dening baris. Tuladha:
Kita khusus nulis sawetara kode kompak kanggo nggambarake carane trep iki. Kode iki uga bisa ditulis kanthi luwih rinci.
|
Nggawe FileReader obyek. Sumber data yaiku file. Nggawe BufferedReader obyek. Sumber data yaiku a FileReader . Anggere isih ana data ing maca Waca siji baris Tampilan baris |
Yen sampeyan nggabungake pirang-pirang aliran, mula close()
cara kasebut mung kudu diarani salah sawijining. Stream kasebut bakal nelpon metode kasebut ing sumber data, lan sateruse, nganti close()
diarani aliran data pungkasan.
3. Maca saka console
Lan kasunyatan liyane menarik: Scanner
kelas ora luwih saka stream input penengah sing maca data saka System.in
, kang uga stream data.
Mangkene rong cara kanggo maca baris saka konsol:
Kelas Scanner | Kelas BufferedReader lan BufferedWriter |
---|---|
|
|
Kanca kita ora luwih saka variabel statis kelas . Iku sing jenenge .System.in
in
System
InputStream
in
Dadi meh wiwit wiwitan sinau Java ing CodeGym, sampeyan wis nggarap aliran data lan nggawe rantai saka dheweke. Nanging saiki sampeyan bakal nindakake kanthi luwih sadar.
GO TO FULL VERSION