У меня есть некоторые вопросы об использовании метода close() при использовании Java InputStreams. Из того, что я вижу и читаю от большинства разработчиков, вы всегда должны явно ссылаться на close() на InputStream, когда он больше не нужен. Но сегодня я искал использование файла свойств Java, и каждый пример, который я нашел, имеет что-то вроде этого:
Properties props = new Properties();
try {
props.load(new FileInputStream("message.properties"));
//omitted.
} catch (Exception ex) {}
В приведенном выше примере нет возможности явно вызвать функцию close(), потому что InputStream недоступен после его использования. Я видел много подобных применений InputStreams, хотя, похоже, это противоречит тому, что большинство людей говорит о явном закрытии. Я прочитал Oracle JavaDocs и не упоминает, закрывает ли метод Properties.load() InputStream. Мне интересно, является ли это вообще приемлемым или предпочтительнее сделать что-то большее, чем следующее:
Properties props = new Properties();
InputStream fis = new FileInputStream("message.properties");
try {
props.load(fis);
//omitted.
} catch (Exception ex) {
//omitted.
} finally {
try {
fis.close();
} catch (IOException ioex) {
//omitted.
}
}
Какой способ лучше и/или эффективнее? Или это действительно имеет значение?