筛选文件行时未关闭的文件句柄



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

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

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

filterLine也适用于阅读器,因此您可以执行以下操作:

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

withReader之后关闭阅读器

最新更新