ՀամակարգիչներԾրագրավորում

Java: InputStream. ներմուծած հոսքերի

Java, ինչպես շատ ժամանակակից ծրագրավորման լեզուների, աջակցում է տվյալների մուտքագրման հոսքերի. Է Java InputStream է կլասը համար բայտ հոսքերի. Այս դասի վերացական, որ, ի ընթացքում ծրագրի, մենք չենք կարող ստեղծել մասնակցային դեպք է. Սակայն, IO փաթեթ ունի մի շարք դասընթացների, որոնք ժառանգել եւ ընդլայնել իր ֆունկցիոնալությունը InputStream: Է օգտագործել այս դասի ձեր կոդում, ապա այն պետք է ներկրվել են java.io.InputStream փաթեթի. Հաջորդը, մենք համարում ենք, որ հիմնական ֆունկցիոնալությունը, որ ապահովում է InputStream դաս, եւ հիմնական դասեր, որոնք իրականացնելու են այն:

InputStream կարգի մեթոդները

Նախքան անցնելը մի մանրամասն ուսումնասիրության InputStream դասակարգային մեթոդների, պետք է նշել, որ այն իրականացնում է Closeable եւ AutoCloseable ինտերֆեյս. Ինտերֆեյս Closeable պատմում է մեզ, որ այդ աշխատանքների ավարտից հետ հոսքի այն պետք է անպայման փակվել: Սա արվում օգտագործելով մեթոդը մոտ (). Քանի որ մեծ մասը InputStream դասակարգային մեթոդների դեպքում սխալի առաջացնում է բացառություն տեսակը IOException, բոլոր գործառնությունները անհրաժեշտ է անցկացնել մի փորձեք բլոկ եւ մեթոդը close () վերջապես կատարել մի միավոր, այնպես, որ այն սայթաքեց կախված գործարկման արդյունքում է փորձել մարմինը:

AutoCloseable ինտերֆեյսը զգալիորեն նվազեցնում է գումարը code պահպանման, քանի որ այն թույլ է տալիս սերտ () մեթոդը աշխատում է ավտոմատ կերպով, եւ չեն ավելացնել ձեր կոդը վերջապես արգելափակել: Եթե դուք օգտագործում եք յոթերորդ թե ուշ տարբերակը Java, որը InputStream կարող է տեղադրված, այսպես կոչված, փորձում ռեսուրսներով, որը բոլոր գործողությունները փակել հոսքը ն տիրում:

Հաշվի առնել հիմնական մեթոդները InputStream դասի:

  • int առկա () - վերադարձնում է կարդալ շարք բայթ.
  • int կարդալ () - վերցնում է ընթացիկ բայտ ռեսուրսի եւ վերադարձնում թիվ ներկայացուցչություն. եթե բոլոր բայթ կարդալ, -1 վերադարձվում է,
  • int կարդալ (բայտ [] բուֆերային) - Կարդում բայթ հասանելի ասել է բուֆերային է ձեւով բայտ զանգված տիպի (թվով բայթ կարդալ բուֆերային հավասար է չափի նշված եւ վերադարձնում թիվը բայթ կարդալ հաջողվել է, եւ եթե բոլոր մատչելի բայթ կարդալ, վերադառնում -1);
  • int կարդալ (բայտ [] բուֆերային, int օֆսեթ, int թիվը բայթ) - ծանրաբեռնված նախորդ մեթոդի, անում է նույնը, բայց մի սահմանված «Օֆսեթ» դիրքորոշման եւ ասվում է, որքան սահմանված է «շարք բայթ",
  • երկար թողնել (երկար բայտ հաշվիչ) - թիվն բայթ նվագացուցակը եւ վերադարձնում իրական թիվը կարոտել:

InputStream իրականացվում է մի քանի դասեր, որոնք նախատեսված են աշխատել տարբեր աղբյուրների եւ տեսակի տվյալների: Ներքեւում ցույց է տալիս ժառանգության ծառը.

կարդում ֆայլեր

Բայտ հոսքի կարդալ տվյալները ֆայլեր իրականացվում դասի FileInputStream: Բացել մի ֆայլ կարդալու համար bytes, բավարար է ստեղծել ատյանի դասի, անցնելով իր կոնստրուկտոր ֆայլի անունը, որպես փաստարկ: Եթե ֆայլը փոխանցվում է անվանման գոյություն չունի, դա շպրտել է բացառություն տիպի FileNotFoundException:

Այն դեպքում, երբ հաջող բաց մի ֆայլ, որոնց հետ աշխատանքը իրականացվում է օգտագործելով այն մեթոդները նկարագրված է վերեւում, քանի որ իրավահաջորդն FileInputStream InputStream:

Կարդալով պարզունակ տվյալների տեսակները

Վերը նշված օրինակում նկարագրում աշխատանքը բայտ արժեքները, որոնք կարող են մեկնաբանվել որպես խորհրդանիշներ. Բայց ինչ, եթե մենք պետք է կարդալ մի ամբողջ թիվ, կոտորակային կամ բուլյան արժեք. Որպեսզի դա անել, Java InputStream անուղղակիորեն ընդլայնում դասային DataInputStream: Սա դաս է մի շապիկ, InputStream, որը անցել է այն ստեղծմանը `որպես շինարար փաստարկ. Այս տեսակ թելի կարդում տվյալները երկուական տեսքով:

DataInputStream նաեւ իրականացնում է DataInput ինտերֆեյսի եւ նրա մեթոդները կարդում պարզունակ տվյալների տեսակները: Ստորեւ բերված է ցանկը այդ մեթոդներով:

Մեթոդ անուններ խոսում են իրենց համար - նրանցից յուրաքանչյուրը նախագծված է կարդալ որոշակի տիպ:

Buffered մուտքագրում հոսք

Buffered հոսքի տվյալների ընթերցման իրականացվում BufferedInputStream դաս է Java. InputStream, որը եզրափակվեց է այս դասի. Այս դասի լրացնում է բուֆերային հոսք, որը թույլ է տալիս Ձեզ ընթերցել, միեւնույն ժամանակ, ոչ թե մեկ, այլ մի քանի բայթ. Սա ստիպում է դա հնարավոր է զգալիորեն բարելավել կատարումը շահագործման: BufferedInputStream հետնորդը InputStream անուղղակի եւ դրանով իսկ ժառանգում բոլոր մեթոդները վերը նշված.

Այս դասի ունի երկու շինարարներին:

  • BufferedInputStream (InputStream մուտքագրման հոսք).
  • BufferedInputStream (InputStream մուտքագրման հոսք, int բուֆերային չափը)

Ստորագրությունը նախագծողների կարելի է հասկանալ, որ առաջին կանխադրում բուֆերային չափը, իսկ երկրորդին, դա հնարավոր է սահմանել այն ձեռքով.

եզրափակում

Մենք դիտարկեցինք հիմնական իրացումը InputStream: Եթե Ձեզ անհրաժեշտ է փոխարկել ստացված bytes մի պարանի Java InputStream ից պարանի (), ցավոք սրտի, չի ծանրաբեռնված, ուստի այն պետք է օգտագործել հատուկ գործիքներ, օրինակ IOUtils ից Apache Commons գրադարանից:

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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