Stwierdzenie prób-z-zasobów w Javie

Stwierdzenie prób-z-zasobów w Javie
Instrukcja TRY-WITH-RESOURCES w Java działa jako instrukcja próba z jednym lub więcej zadeklarowanymi zasobami. Zasób jest określany jako obiekt, który wymaga zamknięcia go po przetworzeniu programu. Instrukcja TRY-WITH-RESOURCES zapewnia, że ​​wszystkie określone zasoby instrukcji TRY są zamknięte po wykonaniu. Zasoby są zamknięte przez sam kompilator Java po zakończeniu instrukcji TRY. Jeśli zasoby nie zostaną zamknięte, w aplikacji może zabraknie zasobów i może nastąpić strata w systemie.

Przykład 1

Próbka z pojedynczym scenariuszem zasobów została pokazana w następujący sposób w celu zbadania wydajności oświadczenia Try-With-Resource w Javie. Poniższy próba z instrukcją pojedynczego zasobu służy do odczytania pliku:

Gdy czytamy plik z instrukcją Try-With-rezource, instrukcja importu modułu FileInputstream jest najpierw dodana. Następnie konstruujemy klasę Java „Demo1”, w której metoda main (. Najpierw mamy blok próbny, w którym deklarujemy zasób strumienia plików. Nazywamy obiekt FileInputStream „FS”, który przyjmuje plik wejściowy „myfile.tekst". Następnie używamy zasobu pliku wejściowego w bloku instrukcji TRY, aby odczytać z tego pliku. Deklarujemy obiekt „mydata”, w którym metoda read () jest wykorzystywana do odczytu pliku wejściowego.

Następnie mamy warunek pętli, aby uzyskać dane z pliku z obiektu „mydata”. Po odczytaniu danych jest one wydrukowane metodą print (), który typ rzucił obiekt „mydata” w char. Wszelkie błędy napotkane z zasobem odczytu pliku wewnątrz instrukcji TRY jest obsługiwane przez instrukcję Catch, która jest wdrażana po instrukcji TRY.

Plik wejściowy „myfile.TXT ”przedstawiony w poprzednim programie zawiera następujące dane:

Blok próbny bez żadnego błędu odczytuje dane z „myfile.txt ”, który jest kopiowany na następującym terminalu:

Przykład 2

Prosta demonstracja próba z rozdzielczością jest zaimplementowana w poprzednim przykładzie. Teraz przypadek jest utworzenie obiektu wewnątrz instrukcji Try-With-zasob. Następnie zamknij program w klasie niestandardowej.

Budujemy klasę Java „Demo3”, która deklaruje metodę main (), w której definiujemy inną klasę, „Customread”. To jest nasza klasa niestandardowa, która implementuje interfejs autoklosów, aby automatycznie zarządzać zasobami bloku próbnego. Następnie, wewnątrz „Customread”, używamy operacji zastąpienia i wywołujemy metodę Close (), aby zamknąć wszystkie zasoby bloku próbnego, które są dostępne z zasobów autoklosów.

Następnie wdrażamy blok próba, w którym zadeklarowany jest obiekt „I”, aby wywołać klasę CustomRead (). Dodajemy zasób instrukcji drukowania wewnątrz bloku próbowania. Na koniec ustawiamy blok połowowy, który wykorzystuje klasę wyjątków, aby obsłużyć dowolny wyjątkowy blok blokowy.

Instrukcja TRY jest wyświetlana w czasie wykonania. Po wykonaniu bloków wypróbowanych JVM wywołuje metodę Close (), która zamyka zasoby wewnątrz bloku próbowania.

Przykład 3

Try-with może być również używane z wieloma zasobami. W tym przypadku z wieloma zasobami zasoby są zamknięte w nawiasach w odwrotnej kolejności, gdy zostaną zadeklarowane. Miejmy przykład prób-z wieloma zasobami z następującej ilustracji:

Najpierw ustawiamy sekcję instrukcji TRY w metodzie Main () tej klasy programu „Demo3”. Instrukcja TRY jest przydzielana z wieloma zasobami. Najpierw tworzymy obiekt „FOS” klasy FileoutputStream, aby zapisać dane w określonym pliku „myfile.tekst". Następnie deklarujemy obiekt „FIS” dla plikuInputStream i wprowadzamy tam nazwę pliku.

Następnie podajemy ciąg w zmiennej „str1” i konwertujemy ciąg na tablicę bajtów za pomocą metody getBytes (). Następnie wywołujemy metodę zapisu (), aby wstawić ciąg bajtowy do pliku. Możemy odczytać zawartość pliku, ponieważ tam jest zapisany ciąg. W tym celu tworzymy obiekt „Inst” pliku wejściowego, w którym klasa DatainputStream () przyjmuje obiekt strumienia wejściowego pliku lub „FIS”. Aby odczytać dane z pliku strumienia wejściowego, wykorzystujemy metodę dostępnej () pliku plikodputstream, która otrzymuje pozostałą liczbę bajtów z pliku.

Następnie mamy konwersję danych bajtowych danych z pliku strumienia wejściowego i odczytał plik metodą read (). Bajtowa jest następnie przekazywana w konstruktorze strunowym, który jest zdefiniowany w obiekcie „str2”. Dane pliku wejściowego są następnie drukowane na wykonaniu programu, gdy blok catch nie złapie żadnego wyjątku od instrukcji TRY.

Tutaj pokazano wiele wyjściowych zasobów. Pokazuje dane zapisane w pliku wejściowym, a następnie odczytuje te dane z pliku.

Przykład 4

Try-z-resources można również zamknąć za pomocą bloku wreszcie. Wreszcie blok weryfikuje, że zasoby zadeklarowane w instrukcji TRY są zamknięte.

Oświadczamy obiekt Buffered -Reader, „Buffread”, który jest zadeklarowany poza instrukcją TRY. Wraz z tym mamy inny obiekt, „strline”. Następnie stosujemy blok próbny, w którym obiekt „Buffread” wywołuje klasę BuffErreader, która ustawia FileReader do odczytu danych z pliku. Pętla While jest wdrażana w celu pobrania danych z obiektu Buffread za pomocą metody ReadLine (). IoException podczas czytania pliku jest złapane i obsługiwane przez blok połowowy bloku próbnego z zasobami.

Następnie mamy wdrożenie bloku w końcu. Wreszcie blok jest dalej wdrażany z blokiem Try-Catch w celu wyczyszczenia zasobów instrukcji TRY, co sprawia, że ​​program jest bardziej złożony. Przyłapanie na bloku ostatecznie jest wykorzystywane, ponieważ istnieje ryzyko, że IOException nastąpi podczas zamykania obiektu Buffered-Reader „Buffread” wewnątrz tego bloku, który jest również złapany i zajmowany.

Dane wyjściowe jest wyświetlane dla instrukcji Try-With-Resource wraz z blokiem wreszcie. Zasoby nie muszą być wyraźnie zamknięte, ponieważ JVM zamyka je dla nas. Jak wiemy, instrukcja TRY-WITH-RESOURCES zarządza zasobami automatycznie, co sprawia, że ​​kod jest prostszy i łatwy do odczytania.

Wniosek

Podstawową zasadą Java Try-With-Resource jest zarządzanie zasobami samochodowymi. Try-z-resource pomaga nam zarządzać zasobami, jednocześnie obsługując wyjątki. Blok próba z rozdzielczością podnosi stłumione wyjątki. Ponadto blok połowowy lub w końcu blok jest zawsze wykonywany po zamknięciu zasobu instrukcji TRY. Wdrożyliśmy instrukcję Try-With-Resource z różnymi scenariuszami przypadków.