过滤文件行时未封闭的文件句柄

时间:2017-11-03 12:33:19

标签: groovy filehandle

我注意到Groovy中的以下代码片段在JVM中提供了未封闭的文件句柄。在GC运行之前我无法删除此文件,并通过调用终结器来关闭资源。

StringWriter writer = new StringWriter()
new File("file.txt").filterLine(writer) { it.startsWith("a") }
println writer.toString()

如何在过滤其行时正确关闭文件?

1 个答案:

答案 0 :(得分:3)

filterLine也适用于读者,所以你可以这样做:

StringWriter writer = new StringWriter()
new File("file.txt").withReader { r ->
   r.filterLine(writer) { it.startsWith("a") }
}
println writer.toString()
之后

withReader关闭了读者