1. InputStreamReaderkelas

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:

Kelas InputStreamReader

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 Readersing maca data saka file. Lan saka ngendi InputStreamReaderentuk data? Sing bener - saka InputStream.

Nalika nggawe InputStreamReaderobyek, sampeyan kudu pass ing InputStreamobyek utawa salah siji saka kelas turunane. Tuladha:

String src = "c:\\projects\\log.txt";
FileInputStream input = new FileInputStream(src);
InputStreamReader reader = new InputStreamReader(input);

Kelas InputStreamReaderwis kabeh cara sing Readerkelas wis, lan padha bisa digunakake ing cara sing padha.

Bentenipun utama antarane InputStreamReaderkelas lan, ngomong, FileReaderngendi padha maca data saka. FileReadermaca data saka file (duh - mulane diarani FileReader), nanging InputStreamReadermaca data saka file InputStream.

Nalika maca karakter saka FileReaderobyek nggunakake read()cara, banjur maca rong bait saka file ing disk lan bali minangka chars.

Nalika sampeyan maca karakter saka InputStreamReaderobyek nggunakake read()cara, banjur maca rong bita saka FileInputStreamobyek liwati, kang siji maca data saka file. Asil punika chain saka telpon kanggo read()cara.


2. BufferedReaderkelas

Kelas liyane sing menarik sing umume sampeyan gunakake yaiku BufferedReader. Iki uga minangka "stream penengah" sing maca data saka stream liyane.

Kaya jenenge, BufferedReaderkelas kasebut minangka subkelas Readerlan 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 Readerkelas.

Apa gunane? Ora kaya InputStreamReader, BufferedReaderkelas ora ngowahi bita dadi karakter: ora ngowahi apa wae. Nanging, buffer data .

Nalika program maca karakter siji saka BufferedReaderobyek, 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 BufferedReaderuga 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.

String src = "c:\\projects\\log.txt";

try(FileReader in = new FileReader(src);
BufferedReader reader = new BufferedReader(in))
{
   while (reader.ready())
   {
      String line = reader.readLine();
      System.out.println(line);
   }
}
Nggawe FileReaderobyek. Sumber data yaiku file.
Nggawe BufferedReaderobyek. Sumber data yaiku a FileReader.
Anggere isih ana data ing maca
Waca siji baris
Tampilan baris
Titik penting:

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: Scannerkelas 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
InputStream stream = System.in;
Scanner console = new Scanner(stream);
String line = console.nextLine();
InputStream stream = System.in;
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buff = new BufferedReader(reader);
String line = buff.readLine();

Kanca kita ora luwih saka variabel statis kelas . Iku sing jenenge .System.ininSystemInputStreamin

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.