try с ресурсами на Java

Начиная с JDK 7 в Java появилась очень полезная и удобная разновидность оператора try – он называется try с ресурсами или try с автоматическим управлением ресурсами. Данный оператор применяется к ресурсам, реализующим интерфейс AutoCloseable (в нём определён метод close()), и отпадает необходимость заботиться о ручном закрытии ресурсов.

Общая форма оператора

Оператор try с ресурсами имеет следующую сигнатуру:

Если предполагается использование нескольких ресурсов, то они отделяются точкой с запятой.

Начиная в JDK 7 интерфейс AutoCloseable реализуют потоки. В том числе потоки ввода-вывода.

Демонстрация применения оператора try с ресурсами

В данном уроке мы напишем программу, которая копирует текстовый файл. В ней будем использовать оператор try с ресурсами.

В строках 11, 12 создаются две локальные для блока try переменные: fis и fos. Это потоки ввода и вывода соответственно. Затем в цикле while (строки 16-17) происходит побайтовое чтение данных из входного файла и их запись в выходной файл. Когда метод read() возвратит значение -1 – значит достигнут конец файла.

В результате выполнения программы файл будет успешно скопирован.

try с ресурсами на Java

Используя оператор try с ресурсами можно быть уверенным, что потоки всегда автоматически будут закрыты (с помощью неявного вызова метода close()): как при успешном выполнении кода в блоке, так и при возникновении исключительных ситуаций.

Как Вы видите, использование данной конструкции более компактно и более безопасно, поэтому в новых приложениях рекомендуется использовать данный подход при работе с потоками.

try с ресурсами на Java
5 (100%) 3 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">