Prøv-med-ressurser i Java

Prøv-med-ressurser i Java
Try-With-ressurserklæringen i Java fungerer som en prøveuttalelse med en eller flere erklærte ressurser. En ressurs blir referert til som et objekt som krever at den blir stengt når programmet er behandlet. Try-With-ressurserklæringen sikrer at alle de spesifiserte ressursene i Try-uttalelsen er stengt etter utførelsen. Ressursene er stengt av selve Java -kompilatoren når prøveuttalelsen er avsluttet. Hvis ressursene ikke er lukket, kan applikasjonen gå tom for ressurser, og det kan være tap i systemet.

Eksempel 1

Forsøket med et enkelt ressursscenario er demonstrert i det følgende for å utforske ytelsen til Try-With-Resource-uttalelsen i Java. Følgende forsøk med den enkelt ressurserklæringen brukes til å lese filen:

Når vi leser filen med Try-With-Resource-setningen, blir importuttalelsen til FileInputStream-modulen først lagt til. Deretter konstruerer vi “Demo1” Java-klassen der Main () -metoden implementeres for å lage uttalelsen fra Try-With-Resource. Først har vi en prøveblokk der vi erklærer ressursen i filstrømmen. Vi kaller FileInputStream -objektet “FS” som tar inndatafilen, “MyFile.tekst". Etter det bruker vi inndatafilressursen i Try -setningsblokken for å lese fra den filen. Vi erklærer “myData” -objektet der lest () -metoden brukes til å lese inndatafilen.

Deretter har vi en stundsløyfetilstand for å få dataene fra filen fra “MyData” -objektet. Når dataene er lest, skrives de ut av Print () -metoden som type støper “MyData” -objektet i røye. Enhver feil som oppstår med fillesressursen i Try Try -setningen, håndteres av fangstuttalelsen som er distribuert etter Try -setningen.

Inndatafilen “MyFile.TXT ”gitt i det forrige programmet inneholder følgende data:

Try-State-blokken uten feil leser dataene fra “Myfilen.txt ”som er kopiert på følgende terminal:

Eksempel 2

Try-With-Resource Simple Demonstration implementeres i forrige eksempel. Nå er saken å opprette objektet i Try-With-ressurserklæringen fra den tilpassede klassen som implementerer det autoklosable grensesnittet. Lukk deretter programmet i den tilpassede klassen.

Vi bygger en "Demo3" Java -klasse som erklærer Main () -metoden der vi definerer en annen klasse, "CustomRead". Dette er vår tilpassede klasse som implementerer grensesnittet til AutoClOsable for automatisk å administrere ressursene i Try -blokken. Deretter, i "CustomRead" tilpasset klasse, bruker vi overstyringsoperasjonen og kaller den lukkede () -metoden for å lukke alle ressursene til prøveblokken som er tilgjengelig fra de autoklosable ressursene.

Etter det distribuerer vi prøveblokken der "jeg" -objektet er erklært å påkalle customread () -klassen. Vi legger til ressursen til utskriftserklæringen i prøveblokken. Til slutt setter vi fangstblokken som bruker unntaksklassen for å håndtere ethvert unntak av prøveblokken.

Try -setningen vises på utførelsestiden. Etter utførelsen av Try Block kaller JVM den lukkede metoden som lukker ressursene i Try -blokken.

Eksempel 3

Try-With kan også brukes med flere ressurser. I dette forsøket med flere ressurser er ressursene stengt inne i parentesene i omvendt rekkefølge når de er erklært. La oss ha eksemplet på prøve-med flere ressurser i følgende illustrasjon:

Vi satte først Try Statement -delen i Main () -metoden i denne programklassen, “Demo3”. Try -uttalelsen er tildelt med flere ressurser. Først oppretter vi “Fos” -objektet i FileOutputStream -klassen for å skrive dataene i den spesifiserte filen, “MyFile.tekst". Deretter erklærer vi “FIS” -objektet for FileInputStream og legger inn filnavnet der.

Deretter gir vi strengen i "Str1" -variabelen og konverterer strengen til byte -arrayen ved hjelp av getBytes () -metoden. Etter det kaller vi skrive () -metoden for å sette inn bytearray -strengen i filen. Vi kan lese innholdet til filen fordi strengen er skrevet der. For dette oppretter vi “Inst” -objektet i inndatafilen der DatainPutStream () -klassen tar filen Input Stream -objektet eller “FIS”. For å lese dataene fra input stream -filen, bruker vi den tilgjengelige () -metoden til FileIntputStream som får det gjenværende antallet byte fra filen.

Deretter har vi bytharray -konvertering av dataene fra inngangsstrømfilen og leser filen via LES () -metoden. ByteArray blir deretter ført i strengkonstruktøren som er definert inne i “Str2” -objektet. Dataene til inndatafilen skrives deretter ut på utførelsen av programmet når fangstblokken ikke vil fange noe unntak fra Try -setningen.

Try-With Multiple Resource Output vises her. Den viser dataene som er skrevet i inndatafilen og leser deretter dataene fra filen.

Eksempel 4

Try-With-ressursene kan også stenges ved hjelp av den endelig blokken. Den endelig blokken verifiserer at ressursene som er erklært i Try -uttalelsen er stengt.

Vi erklærer BufferedReader -objektet, "Buffread", som er erklært utenfor Try -uttalelsen. Sammen med dette har vi et annet objekt, "strline". Etter det bruker vi prøveblokken der "Buffread" -objektet kaller BufferReder -klassen som setter FileReader til å lese dataene fra filen. Mens Loop er distribuert for å ta dataene fra Buffread -objektet ved hjelp av Readline () -metoden. IOException mens du leser filen blir fanget og håndtert av fangstblokken i Try -blokken med ressursene.

Deretter har vi en implementering av en endelig blokk. Endelig blokkering er videre distribuert med prøvefangstblokken for å rense Try-uttalelsesressursene som gjør programmet mer komplisert. Try-fangst av den endelig blokkeringen brukes fordi det er risikoen for at en IOException skal oppstå når du lukker BufferedReader-objektet "Buffread" inne i denne endelig blokken, som også blir fanget og behandlet.

Utgangen vises for trygghetsuttalelsen sammen med den endelig blokken. Ressursene trenger ikke å være eksplisitt stengt fordi JVM lukker dem for oss. Som vi vet, administrerer Try-With-ressurserklæringen ressursene automatisk, noe som gjør koden enklere og enkel å lese.

Konklusjon

Det grunnleggende prinsippet for Java Try-With-Resource er Auto Resource Management. Try-With-Resource hjelper oss med å administrere ressursene mens vi håndterer unntakene. Try-With-ressursblokken reiser undertrykte unntak. Dessuten blir fangstblokken eller den endelig blokkeringen alltid utført etter at ressursen til Try -uttalelsen er stengt. Vi implementerte prøvekostnaden.