Закрытие BufferedReader

Если я вызову BufferedReader следующим образом:

Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());

Будет ли JVM знать, чтобы автоматически закрывать его, когда он не используется? Если нет, как мне его закрыть?

2 ответа

Решение

Если вы используете Java 7 или выше, и ваш код находится в try catch resource блок, то это Auto closes,

Если в следующих версиях вы должны закрыть с помощью close (). Для этого вы должны изменить свой текущий способ использования и получить ссылку.

Не цепляйте их, объявляйте и назначайте переменные, затем закрывайте их после использования.

InputStreamReader isReader;
BufferedReader bfReader;
try {
     isReader = new InputStreamReader(System.in);
     bfReader = new BufferedReader(isReader).readLine();
} catch (Exception e) {
// handle as per the requirement.
} finally {
    bfReader.close();
}

Если вы используете Java 7, то, если вы определили с помощью предложения try, они будут автоматически закрыты. Проверьте здесь для более подробной информации

Оператор try-with-resources является оператором try, который объявляет один или несколько ресурсов. Ресурс - это объект, который должен быть закрыт после того, как программа завершит работу с ним. Оператор try-with-resources обеспечивает закрытие каждого ресурса в конце оператора. Любой объект, который реализует java.lang.AutoCloseable, который включает все объекты, которые реализуют java.io.Closeable, может использоваться в качестве ресурса.

Другие вопросы по тегам