摘要:当发生异常时,它将自动关闭所有资源,例如以下代码:检查源代码打印帮助1defcount=0,MAXSIZE=1002newFile。使用reader{reader-˃3while(reader.readLine())!
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