Применяем closures для автоматического закрытия файлов | OTUS

Применяем closures для автоматического закрытия файлов

В некоторых случаях при работе с Groovy надо обеспечить автоматическое закрытие файла, что особенно актуально во время использования ресурсоёмких классов. Вопрос может быть актуален для таких методов, как close() или destroy(). Рассмотрим пример.

4-20219-efbbf8.png

Давайте представим, что нам надо запрограммировать вывод текста 'Hello' в файл output.txt. В языке Groovy для данной цели задействуется стандартный класс FileWriter:

1-20219-3ee145.png

Итак, при создании экземпляра w класса FileWriter мы осуществляем передачу названия файла (это может быть относительный путь, как в примере, либо полный). В момент создания экземпляра происходит открытие файла для записи (или же файл создается заново -- в том случае, если до этого он не существовал). Далее метод класса write выводит в файл уже свой аргумент. Но тут стоит учесть, что вывода не будет, да и файл станет считаться занятым ровно до тех пор, пока мы не выполним его закрытие --- w.close().

Чтобы потом не заботиться об этом закрытии, мы можем обеспечить автоматическое закрытие файла -- здесь пригодится метод withWriter класса FileWriter. В качестве параметра он принимает closure, выполняющий вывод, а потом автоматически закрывает наш файл:

2-20219-4b1fe9.png

При этом в момент вызова метода withWriter параметр closure t примет информацию как о расположении файла, так и о его имени.

Осталось добавить, что мы можем не вводить имя экземпляра класса w, а использовать при желании иную форму:

3-20219-6f4231.png

По материалам https://pessim50.ucoz.ru/Groovy.pdf.

P. S. Интересует Groovy? Записывайтесь на курс "Groovy Developer"!.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто