【问题标题】:How to close a list of OutputStream in Java? [duplicate]如何关闭 Java 中的 OutputStream 列表? [复制]
【发布时间】:2016-09-16 09:38:15
【问题描述】:

我有一个OutputStream 的列表要处理,我知道当我只需要一个时,我可以确保它使用try-with-resources 模式关闭,例如:

try(OutputStream os = new ByteArrayOutputStream()) {
    do something...
} catch (IOException e) {
    do something...
}

但是如果有他们的列表呢?我可以将列表(ArrayList 或普通数组)放在try 后面的括号中吗?

【问题讨论】:

  • 在 try-with-resource 语句中没有明确支持 List。如果你真的想使用try (...) { ... } 语法,你必须滚动你自己的AutoCloseable,它包含AutoCloseables 的列表。像this 这样的东西可以工作。

标签: java outputstream try-with-resources


【解决方案1】:

您可以为此使用foreach(或标准for)。

OutputStream[] streams = {...};

for (OutputStream stream : streams) {
    try (OutputStream os = stream) {} 
    catch (IOException e) {}
}

您不能“将ArrayList 或普通数组放在try 之后的括号中”,因为它只能与实现接口java.lang.AutoCloseable 的对象一起使用。

【讨论】:

  • 根据用例可能会在关闭失败时做一些事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 2011-05-05
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多