过滤文件行时未关闭的文件句柄
Unclosed file handle when filtering file lines
我注意到 Groovy 中的以下代码片段在 JVM 中留下了未关闭的文件句柄。在 GC 运行并通过调用终结器关闭资源之前,我无法删除此文件。
StringWriter writer = new StringWriter()
new File("file.txt").filterLine(writer) { it.startsWith("a") }
println writer.toString()
过滤行时如何正确关闭文件?
filterLine
也适用于 reader,因此您可以:
StringWriter writer = new StringWriter()
new File("file.txt").withReader { r ->
r.filterLine(writer) { it.startsWith("a") }
}
println writer.toString()
withReader
之后关闭 reader
我注意到 Groovy 中的以下代码片段在 JVM 中留下了未关闭的文件句柄。在 GC 运行并通过调用终结器关闭资源之前,我无法删除此文件。
StringWriter writer = new StringWriter()
new File("file.txt").filterLine(writer) { it.startsWith("a") }
println writer.toString()
过滤行时如何正确关闭文件?
filterLine
也适用于 reader,因此您可以:
StringWriter writer = new StringWriter()
new File("file.txt").withReader { r ->
r.filterLine(writer) { it.startsWith("a") }
}
println writer.toString()
withReader
之后关闭 reader