ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode


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()): как при успешном выполнении кода в блоке, так и при возникновении исключительных ситуаций.

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

5/5 - (4 голоса)



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

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

Ваш адрес email не будет опубликован.