我注意到Groovy中的以下代码片段在JVM中提供了未封闭的文件句柄。在GC运行之前我无法删除此文件,并通过调用终结器来关闭资源。
StringWriter writer = new StringWriter()
new File("file.txt").filterLine(writer) { it.startsWith("a") }
println writer.toString()
如何在过滤其行时正确关闭文件?
答案 0 :(得分:3)
filterLine
也适用于读者,所以你可以这样做:
StringWriter writer = new StringWriter()
new File("file.txt").withReader { r ->
r.filterLine(writer) { it.startsWith("a") }
}
println writer.toString()
之后 withReader
关闭了读者