Закрытие 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, может использоваться в качестве ресурса.