@ForsakenHedgehog

Надо ли закрывать поток ввода/вывода или он закрывается автоматически?

В приведенных ниже примерах с клавиатуры считывается строка двумя немного отличающимися способами.
String file = new BufferedReader(new InputStreamReader(System.in)).readLine();


BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();


В первом случае, как я понимаю, вручную я не могу закрыть поток ввода. Он закрывается автоматически или существует до завершения программы?

И подскажите на будущее, как называется такая синтаксическая конструкция создания экземпляра класса, как в первом примере? Один из тех случаев, когда не знаешь как сформулировать вопрос в гугл.
  • Вопрос задан
  • 791 просмотр
Решения вопроса 2
@melouw
Рекомендуется использовать try-with-resources
try (BufferedReader reader =
                     new BufferedReader(new InputStreamReader(System.in))) {
            String file = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }


В таком случае ресурсы освободяться правильно
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
В первом случае потоки существуют до ближайшей сборки мусора. Но это плохая практика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽