我注意到在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
之后关闭阅读器