KompjutersProgrammazzjoni

Java: InputStream. Input Streams

Java, bħal ħafna lingwi ta 'programmar moderni, tappoġġa l-implimentazzjoni ta' flussi tad-dħul tad-dejta. Fil-Java, InputStream hija l-klassi bażi għall-flussi tal-bytes. Din il-klassi hija astratta, jiġifieri, fil-proċess tal-programm ma nistgħux noħolqu l-istanza tagħha. Madankollu, fil-pakkett io, hemm bosta klassijiet li jirtu u jestendu l-funzjonalità tal-InputStream. Biex tuża din il-klassi fil-kodiċi tiegħek, għandek bżonn timportaha mill-pakkett java.io.InputStream. Sussegwentement, ser inħarsu lejn il-funzjonalità bażika pprovduta mill-klassi InputStream, kif ukoll il-klassijiet ewlenin li jimplimentawha.

Metodi għall-klassi InputStream

Qabel ma tipproċedi għal studju dettaljat tal-metodi tal-klassi InputStream, għandu jissemma li timplimenta l-interfaces Closeable u AutoCloseable. L-interface Close-up tgħidilna li meta tagħlaq il-ħajta, għandha tkun magħluqa. Dan isir bl-użu tal-metodu close (). Peress li l-biċċa l-kbira tal-metodi tal-klassi InputStream jiġġeneraw eċċezzjoni ta 'tip IOException f'każ ta' żball, l-operazzjonijiet kollha għandhom isiru fil-blokk try, u l-metodu close () għandu jingħata lill-blokka finali biex taħdem irrispettivament mir-riżultat tax-xogħol fil-korp try.

L-interface AutoCloseable tnaqqas b'mod sinifikanti l-ammont ta 'kodiċi tekniku, minħabba li jippermetti li l-metodu close () jixgħel awtomatikament u ma jżidx blokk finali għall-kodiċi tiegħek. Jekk qed tuża seba 'jew iktar verżjoni ta' Java, tista 'tpoġġi l-InputStream f'prova msejħa tipprova b'riżorsi, li tieħu ħsieb l-operazzjonijiet kollha ta' l-għeluq.

Ikkunsidra l-metodi ewlenin tal-klassi InputStream:

  • Int disponibbli () - Jirritorna n-numru ta 'bytes disponibbli għall-qari;
  • Int taqra () - tieħu mir-riżorsa tal-byte kurrenti u tirritornaha fir-rappreżentazzjoni tan-numru sħiħ; Jekk il-bytes kollha jinqraw, il-prospetti -1;
  • Int aqra (byte [] buffer) - jaqra l-bytes disponibbli fil-buffer speċifikat bħala firxa ta 'byte tat-tip (in-numru ta' bytes li jinqraw huwa ugwali għad-daqs tal-buffer speċifikat, jirritorna n-numru ta 'bytes li nqraw, prospetti -1 jekk il-bytes kollha jinqraw);
  • Int taqra (byte [] buffer, int offset, int numru ta 'bytes) - eċċess tal-metodu preċedenti, tagħmel l-istess, iżda bil-pożizzjoni speċifikata fil- "offset" u taqra kemm speċifikat fin- "numru ta' bytes";
  • Long skip (numru twil ta 'bytes) - skips in-numru speċifikat ta' bytes u jirritorna n-numru attwali ta 'bytes.

InputStream huwa implimentat minn bosta klassijiet, iddisinjati biex jaħdmu b'sorsi u tipi ta 'data differenti. Is-siġra tal-wirt hija ppreżentata hawn taħt.

Qari Fajls

Il-fluss tal-byte għall-qari tal-informazzjoni minn fajls huwa implimentat mill-klassi FileInputStream. Sabiex tiftaħ il-fajl għall-qari ta 'bytes, huwa biżżejjed li tinħoloq istanza ta' din il-klassi, li tgħaddi l-isem tal-fajl lill-kostruttur bħala argument. Jekk il-fajl bl-isem mogħti ma jeżistix, tinħareġ eċċezzjoni tat-tip FileNotFoundException.

Fil-każ ta 'ftuħ b'suċċess ta' fajl, ix-xogħol magħha jitwettaq bl-użu tal-metodi deskritti hawn fuq, peress li FileInputStream huwa s-suċċessur tal-InputStream.

Qari ta 'tipi ta' data primittivi

L-eżempju ta 'qabel jiddeskrivi l-ħidma mal-valuri tal-byte li jistgħu jiġu interpretati bħala simboli. Imma x'jiġri jekk irridu naraw valur sħiħ, frazzjonali jew loġiku? Għal dan, fil-Java InputStream hija estiża indirettament mill-klassi DataInputStream. Din il-klassi hija t-tgeżwir għall-InputStream, li tiġi mgħoddija lilha meta tinħoloq bħala argument għall-kostruttur. Dan it-tip ta 'fluss jaqra d-dejta f'forma binarja.

DataInputStream jimplimenta wkoll l-interface DataInput u l-metodi tiegħu għall-qari ta 'tipi ta' data primittivi. Hawn taħt hawn lista ta 'dawn il-metodi.

L-ismijiet tal-metodi jitkellmu għalihom infushom - kull wieħed minnhom huwa maħsub biex jaqra ċertu tip ta 'dejta.

Fluss ta 'input buffered

Id-data buffered read stream hija implimentata mill-klassi BufferedInputStream f'Java. Id-dħulStream huwa mgeżwer f'din il-klassi. Din il-klassi tikkomplementa l-fluss b'buffer, li jippermettilek taqra aktar minn byte wieħed kull darba. Dan jagħmilha possibbli li titjieb b'mod sinifikanti l-prestazzjoni tal-operazzjoni. BufferedInputStream huwa dixxendent indirett tal-InputStream u, għaldaqstant, jirtu l-metodi kollha ta 'hawn fuq.

Din il-klassi għandha żewġ kostrutturi:

  • BufferedInputStream (InputStream input stream);
  • BufferedInputStream (Fluss ta 'input InputStream, daqs ta' buffer int)

Mill-firma tal-kostrutturi, tista 'tifhem li l-ewwel wieħed jistabbilixxi d-daqs ta' buffer awtomatiku, u fit-tieni wieħed huwa possibbli li dan jiġi ffissat manwalment.

Konklużjoni

Irrevedew l-implimentazzjonijiet bażiċi tal-InputStream. Jekk teħtieġ li tikkonverti l-bytes riċevuti fi string, allura fl- Java InputStream to String (), sfortunatament, ma tkunx mgħobbi żżejjed, għalhekk għal dan ser ikollok tuża utilitajiet speċjali, per eżempju IOUtils mill-librerija Apache Commons.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 mt.atomiyme.com. Theme powered by WordPress.