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