Groovy为I/O提供了一系列的helper methods ,所有的这些方法都适用于标准的 Java Reader/Writer ,InputStream/OutputStream 和File 以及URL classes.
闭包的使用可以确保资源被正确的关闭,比如遍历文件的每一行可以使用下面的代码:
1 |
new File( "foo.txt" ). eachLine { line -> println (line) } |
如果在某些情况下,println()方法抛出了异常,那么eachLine()方法将确保资源被正确的关闭,同样的,如果在读取的时候发生了异常,那么资源也将会被正确的关闭。
如果你希望使用在reader/writer object或者input/output stream object的时候,有一些辅助方法来帮助你处理资源的关闭,那么这个时候你可以使用闭包。他将自动的在异常发生的时候关闭所有的资源,比如下面的代码:
1 |
def count = 0 , MAXSIZE= 100 |
2 |
new File( "foo.txt" ). withReader { reader -> |
3 |
while (reader. readLine () != null ) { |
4 |
if (++ count > MAXSIZE) throw new RuntimeException( 'File too large!' ) |
以及:
1 |
def fields = [ "a" : "1" , "b" : "2" , "c" : "3" ] |
2 |
new File( "foo.ini" ). withWriter { out -> |
3 |
fields. each () { key, value -> |
4 |
out. writeLine ( "${key}=${value}" ) |
Further Information