关闭Java InputStreams
我在使用Java
InputStreams时对close()方法的用法有一些疑问。从我对大多数开发人员的了解和了解中,您应该总是在不再需要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.
}
}
哪种方法更好和/或更有效?还是真的重要吗?
回答:
“
属性教程
”中的示例在FileInputStream
加载后显式关闭了显式窗口,因此我认为可以肯定地认为该load
方法不负责任。
// create and load default propertiesProperties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();
仅供参考,我检查了Apache的和谐的执行性能,它也
不会 在负载关闭流。
以上是 关闭Java InputStreams 的全部内容, 来源链接: utcz.com/qa/404693.html