大家下午好。
我有一些关于使用close()方法时使用Java InputStreams的问题。从我从大多数开发人员看到和阅读,你应该总是在不再需要InputStream时显式地调用close()。但是,今天我正在研究使用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.
}
}
哪种方式更好和/或更高效?还是真的很重要?谢谢!