У меня есть несколько вопросов об использовании метода 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.
}
}
Какой способ лучше и / или эффективнее? Или это действительно важно?