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!' )
|
5 |
}
|
6 |
} |
以及:
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}" )
|
5 |
}
|
6 |
} |
Further Information
- Streams, Readers, and Writers for more on Input and Output.
- See also: Process Management
时间: 2024-09-29 14:39:00