Задать вопрос
@ForsakenHedgehog

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

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


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


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

И подскажите на будущее, как называется такая синтаксическая конструкция создания экземпляра класса, как в первом примере? Один из тех случаев, когда не знаешь как сформулировать вопрос в гугл.
  • Вопрос задан
  • 855 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
Решения вопроса 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
Седой и строгий
В первом случае потоки существуют до ближайшей сборки мусора. Но это плохая практика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы