关闭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 properties

Properties defaultProps = new Properties();

FileInputStream in = new FileInputStream("defaultProperties");

defaultProps.load(in);

in.close();

仅供参考,我检查了Apache的和谐的执行性能,它也

不会 在负载关闭流。

以上是 关闭Java InputStreams 的全部内容, 来源链接: utcz.com/qa/404693.html

回到顶部