gpt4 book ai didi

java - 在 Java 中处理流

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:59 25 4
gpt4 key购买 nike

在 C# 中,我在处理流对象时几乎总是使用 using 模式。例如:

using (Stream stream = new MemoryStream())
{
// do stuff
}

通过使用 using block ,我们确保在该代码块执行后立即在流上调用 dispose。

我知道 Java 没有与 using 关键字等价的东西,但我的问题是,在 Java 中处理像 FileOutputStream 这样的对象时,我们是否需要做任何家务以确保它得到处置?我在看this代码示例,我注意到他们什么也没做。

我只是想知道 Java 在处理处置流方面的最佳实践是什么,或者它是否足以让垃圾收集器处理它。

最佳答案

通常,您必须执行以下操作:

InputStream stream = null;
try {
// IO stuff - create the stream and manipulate it
} catch (IOException ex){
// handle exception
} finally {
try {
stream.close();
} catch (IOException ex){}
}

但是 Apache commons-io提供 IOUtils.closeQuietly(stream); 放在 finally 子句中以使其不那么丑陋。我认为在 Java 7 中会有一些改进。

更新:Jon Skeet 发表了一个非常有用的评论,异常的实际处理很少可能发生在类本身中(除非它只是记录它,但实际上并没有处理它)。因此,您最好声明您的方法向上抛出该异常,或将其包装在自定义异常中(简单的原子操作除外)。

关于java - 在 Java 中处理流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com