@SlavaMorg

Как в Java закрывать потоки, на которые нет ссылки?

Например мне нужно считать всего одну строку. Я делаю так (конечно, может быть так делать нельзя):
String s = (new BufferedReader(new InputStreamReader(System.in))).readLine();

Как мне закрывать эти потоки? Они закроются сами или всё же будут занимать ресурсы? Так вообще делают или это дурной тон?

Или даже если так написать (так точно делают):
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.close();

Тоже ведь не могу явно закрыть InputStreamReader. И как быть?

Простите, если что, за элементарные вопросы. В гугле не нашёл, может быть формулировал неправильно.
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Все довольно просто.
Closes the stream and releases any system resources associated with it. Once the stream has been closed, further read(), ready(), mark(), reset(), or skip() invocations will throw an IOException. Closing a previously closed stream has no effect.

Т.е. BufferedReader.close() также освободит все ресурсы сам.
Чтобы точно понять глянь тут исходник на 520 строке.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы