Dichiarazione di prova con risorse in Java

Dichiarazione di prova con risorse in Java
La dichiarazione di prova con risorse in Java funziona come una dichiarazione di prova con una o più risorse dichiarate. Una risorsa viene definita un oggetto che richiede che sia chiusa quando il programma è stato elaborato. La dichiarazione di prova con risorse garantisce che tutte le risorse specificate della dichiarazione di prova siano chiuse dopo l'esecuzione. Le risorse sono chiuse dal compilatore Java stesso quando la dichiarazione di prova è terminata. Se le risorse non sono chiuse, l'applicazione potrebbe esaurire le risorse e potrebbe esserci una perdita nel sistema.

Esempio 1

Il tentativo con un unico scenario di risorse è dimostrato di seguito per esplorare le prestazioni della dichiarazione di prova con risorse. Il seguente tentativo con l'istruzione singola risorsa viene utilizzato per leggere il file:

Mentre leggiamo il file con l'istruzione Try-With-Resource, viene aggiunta prima l'istruzione di importazione del modulo FileInputStream. Quindi, costruiamo la classe Java "Demo1" in cui viene implementato il metodo principale () per creare la dichiarazione del try-with-resurce. Innanzitutto, abbiamo un blocco di prova in cui dichiariamo la risorsa del flusso di file. Chiamiamo l'oggetto FileInputStream "FS" che prende il file di input, "MyFile.TXT". Successivamente, utilizziamo la risorsa del file di input all'interno del blocco dell'istruzione try per leggere da quel file. Dichiariamo l'oggetto "MyData" in cui viene utilizzato il metodo Read () per leggere il file di input.

Successivamente, abbiamo una condizione di loop per ottenere i dati del file dall'oggetto "mydata". Una volta letti i dati, vengono stampati con il metodo Print () che digita l'oggetto "MyData" in char. Qualsiasi errore riscontrato con la risorsa di lettura del file all'interno dell'istruzione Try è gestito dall'istruzione Catch che viene distribuita dopo l'istruzione Try.

Il file di input “myfile.txt "fornito nel programma precedente contiene i seguenti dati:

Il blocco di tentativi di prova senza alcun errore legge i dati da "MyFile.txt "che viene copiato sul seguente terminale:

Esempio 2

La semplice dimostrazione di prova con risorsa è implementata nell'esempio precedente. Ora, il caso è quello di creare l'oggetto all'interno della dichiarazione try-with-resurce della classe personalizzata che implementa l'interfaccia autoclosabile. Quindi, chiudi il programma all'interno della classe personalizzata.

Costruiamo una classe Java "Demo3" che dichiara il metodo principale () in cui definiamo un'altra classe, il "CustomRead". Questa è la nostra classe personalizzata che implementa l'interfaccia di autoclosevole per gestire automaticamente le risorse del blocco di prova. Quindi, all'interno della classe personalizzata "CustomRead", utilizziamo l'operazione di override e chiamiamo il metodo Close () per chiudere tutte le risorse del blocco di prova a cui si accede dalle risorse autoclosabili.

Successivamente, distribuiamo il blocco di prova in cui viene dichiarato l'oggetto "I" per invocare la classe CustomRead (). Aggiungiamo la risorsa dell'istruzione di stampa all'interno del blocco di prova. Infine, impostiamo il blocco catch che utilizza la classe di eccezione per gestire qualsiasi eccezione del blocco di prova.

L'istruzione Try viene visualizzata nel tempo di esecuzione. Dopo l'esecuzione del blocco di prova, JVM chiama il metodo Close () che chiude le risorse all'interno del blocco Try.

Esempio 3

Il try-with può anche essere utilizzato con più risorse. In questo tentativo più di risorse multiple, le risorse sono chiuse all'interno delle parentesi in ordine inverso quando vengono dichiarate. Facciamo l'esempio del tentativo di più risorse nella seguente illustrazione:

Per prima cosa abbiamo impostato la sezione Dichiarazione di prova all'interno del metodo principale () di questa classe di programma, "Demo3". L'istruzione Try è allocata con più risorse. Innanzitutto, creiamo l'oggetto "FOS" della classe FileOutputStream per scrivere i dati all'interno del file specificato, "MyFile.TXT". Quindi, dichiariamo l'oggetto "FIS" per FileInputStream e inseriamo il nome del file lì.

Successivamente, forniamo la stringa nella variabile "STR1" e convertiamo la stringa nell'array di byte usando il metodo getBytes (). Successivamente, chiamiamo il metodo Write () per inserire la stringa byteArray nel file. Possiamo leggere il contenuto di un file perché la stringa è scritta lì. Per questo, creiamo l'oggetto "Inst" del file di input in cui la classe DataInputStream () prende l'oggetto del flusso di input file o "FIS". Per leggere i dati del file di flusso di input, utilizziamo il metodo disponibile () del fileIntputStream che ottiene il numero rimanente di byte dal file.

Successivamente, abbiamo la conversione BYTEArray dei dati dal file di flusso di input e leggiamo il file tramite il metodo read (). Il bytearray viene quindi passato nel costruttore di stringhe definito all'interno dell'oggetto "STR2". I dati del file di input vengono quindi stampati sull'esecuzione del programma quando il blocco di cattura non catturerà alcuna eccezione dall'istruzione Try.

L'output di risorse multiple è mostrato qui. Mostra i dati scritti all'interno del file di input e quindi legge quei dati dal file.

Esempio 4

Le risorse di prova possono anche essere chiuse usando il blocco finalmente. Il blocco infine verifica che le risorse dichiarate nell'istruzione Try sono chiuse.

Dichiariamo l'oggetto BufferedReader, "BuffRead", che viene dichiarato al di fuori della dichiarazione di prova. Insieme a questo, abbiamo un altro oggetto, la "Strline". Successivamente, utilizziamo il blocco di prova in cui l'oggetto "BuffRead" chiama la classe BufferReader che imposta il fileReader per leggere i dati dal file. Il ciclo while viene distribuito per prendere i dati dall'oggetto BuffRead usando il metodo readline (). IoException durante la lettura del file viene catturato e gestito dal blocco di cattura del blocco di prova con le risorse.

Successivamente, abbiamo un'implementazione di un blocco finalmente. Il blocco infine viene ulteriormente distribuito con il blocco Try-Catch per pulire le risorse dell'istruzione Try che rende il programma più complesso. Il try-catch del blocco finalmente viene utilizzato perché c'è il rischio che si verifichi un IOException quando si chiude l'oggetto bufferedReader "BuffRead" all'interno di questo blocco finalmente, che viene anche catturato e trattato.

L'output viene visualizzato per l'istruzione Try-With-Resurce insieme al blocco finalmente. Le risorse non devono essere esplicitamente chiuse perché la JVM le chiude per noi. Come sappiamo, la dichiarazione di prova con risorse gestisce automaticamente le risorse, il che rende il codice più semplice e facile da leggere.

Conclusione

Il principio fondamentale del tentativo Java-With-Resurce è la gestione delle risorse auto. Il tentativo di risorse ci aiuta a gestire le risorse mentre gestiscono le eccezioni. Il blocco di prova con risorse solleva eccezioni soppresse. Inoltre, il blocco di cattura o il blocco finalmente viene sempre eseguito dopo la chiusura della risorsa dell'istruzione Try. Abbiamo implementato la dichiarazione di prova con risorse con diversi scenari.