【发布时间】:2012-02-10 13:15:53
【问题描述】:
有没有更好的方法来确保资源被正确释放 - 编写以下代码的更好方法?
val out: Option[FileOutputStream] = try {
Option(new FileOutputStream(path))
} catch {
case _ => None
}
if (out.isDefined) {
try {
Iterator.continually(in.read).takeWhile(-1 != _).foreach(out.get.write)
} catch {
case e => println(e.getMessage)
} finally {
in.close
out.get.flush()
out.get.close()
}
}
【问题讨论】:
-
因为我需要能够嵌套多个 java.lang.AutoCloseable 实例,每个实例都依赖于前一个成功实例化的实例,所以我终于找到了一个对我非常有用的模式。我把它写成类似 StackOverflow 问题的答案:stackoverflow.com/a/34277491/501113
标签: scala