KompjuteraProgramimi

Java: InputStream. input streams

Java, si shumë gjuhë moderne të programimit, mbështet zbatimin e rrjedhave të dhënave të dhëna. Në Java InputStream është klasa bazë për byte streams. Kjo klasë është abstrakte, që është, në rrjedhën e programit ne nuk mund të krijojë një shembull të saj. Megjithatë, paketë io ka një grup të klasave që trashëgojnë dhe të zgjasë funksionalitetin e InputStream. Për të përdorur këtë klasë në kodin tuaj, ajo duhet të importohen nga paketë java.io.InputStream. Tjetra, ne e konsiderojmë funksionalitetin bazë që ofron një klasë InputStream, dhe klasa kryesore që zbatojnë atë.

Metodat e klasës InputStream

Para se të vazhdojmë me një studim të detajuar të metodave të klasës InputStream, duhet përmendur se ajo zbaton closeable dhe AutoCloseable ndërfaqe. Interface closeable na tregon se në përfundimin e punës me rrjedhën e saj detyrimisht duhet të jenë të mbyllura. Kjo është bërë duke përdorur një metodë të ngushtë (). Meqenëse shumica e metodave të klasës InputStream në rast të një gabimi gjeneron një lloj përjashtimi IOException, të gjitha operacionet e nevojshme për të kryer një bllok të përpiqen dhe një të ngushtë metodë () më në fund të bëjë një njësi në mënyrë që ajo është e morën në varësi të rezultatit të operacionit të provoni trupin.

AutoCloseable ndërfaqe të konsiderueshme zvogëlon sasinë e mirëmbajtjes kodit, pasi ajo lejon të ngushtë () punojnë metodë automatikisht dhe mos shtoni në kodin tuaj në fund të bllokuar. Në qoftë se ju përdorni versionin e shtatë ose më vonë të Java, një InputStream mund të vendosen në të ashtuquajturën provoni me burime të cilat të gjitha operacionet për mbylljen e rrjedhjes merr përsipër.

Konsideroni metodat themelore të klasës InputStream:

  • int dispozicion () - kthen një numër lexuar bytes;
  • int lexuar () - merr bajt aktuale të burimeve dhe kthen përfaqësimin integer; nëse të gjitha bytes lexuar, -1 është kthyer;
  • int lexuar (bajt [] buffer) - lexon bajt në dispozicion tha buffer në formën e një lloji të vargut bajt (numri i bajt lexuar tampon barabarte me madhësi të përcaktuar dhe e kthen numri i bajt lexuar arritur dhe nëse të gjitha bajt disponueshme lexuar kthimit -1);
  • int lexuar (byte [] tampon, int kompensuar, numri int i bytes) - mbingarkesë e metodës së mëparshme, bën të njëjtën gjë, por me një "kompensuar" pozicion të caktuar dhe lexon sa më shumë të vendosur në "numrin e bytes";
  • kaloni kohë (numërimin e gjatë byte) - numri i skips bytes dhe kthen numrin aktual të humbura.

InputStream është zbatuar disa klasa projektuar për të punuar me burime të ndryshme dhe llojet e të dhënave. Më poshtë tregon pemë trashëgimisë.

leximi fotografi

Byte lumë për të lexuar të dhënat nga dosjet është zbatuar në klasë FileInputStream. Për të hapur një skedë për leximin bytes, të mjaftueshme për të krijuar një shembull të klasës, duke kaluar për konstruktori i saj emrin e file si argument. Në qoftë se skeda është transferuar në emër nuk ekziston, ajo do të hedhin një përjashtim të tipit FileNotFoundException.

Në rast të një një skedar të suksesshëm të hapur, puna me ta është kryer duke përdorur metodat e përshkruara më sipër, siç është pasardhësi FileInputStream InputStream.

Leximi llojet primitive të dhënave

Në shembullin e mësipërm përshkruan punën me vlerat e byte, të cilat mund të interpretohen si simbole. Por, çfarë nëse ne kemi nevojë për të lexuar një numër të plotë, i pjesshëm apo një vlerë Boolean? Për ta bërë këtë në Java InputStream indirekte zgjeron DataInputStream klasës. Kjo klasë është një këmishë për InputStream, e cila është transmetuar atë në krijimin si një argument konstruktor. Ky lloj i fije lexon të dhënat në formë binare.

DataInputStream gjithashtu zbaton interface DataInput dhe metodat e saj për leximin llojet primitive të dhënave. Më poshtë është një listë e këtyre metodave.

emrat Metoda flasin për veten e tyre - secili prej tyre është i dizajnuar për të lexuar lloje të veçanta të të dhënave.

Stream buffered input

Buffered dhënat lumë leximi realizohet klasë BufferedInputStream në Java. InputStream është mbështjellë me këtë klasë. Kjo klasë plotëson lumë tampon, duke e lejuar ju për të lexuar në të njëjtën kohë jo një, por disa bytes. Kjo bën të mundur për të përmirësuar ndjeshëm performancën e operacionit. BufferedInputStream pasardhës InputStream është një indirekte dhe kështu trashëgon të gjitha metodat e përmendura më lart.

Kjo klasë ka dy ndërtuesit:

  • BufferedInputStream (InputStream hyrje rrymë);
  • BufferedInputStream (InputStream hyrje rrymë, int buffer madhësia)

Nënshkrimi i designers mund të kuptohet se i pari përcakton madhësinë tampon parazgjedhur, dhe në të dytin është e mundur për të vendosur atë me dorë.

përfundim

Kemi shqyrtuar realizimin bazë të InputStream. Nëse keni nevojë për të kthyer bytes pranohej për një varg në Java InputStream deri String (), për fat të keq, nuk është i mbingarkuar, kështu që do të duhet të përdorin mjete të posaçme, p.sh. IOUtils nga biblioteka Apache Commons.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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