Groovy爲I/O提供了一系列的helper methods ,全部的這些方法都適用於標準的 Java Reader/Writer ,InputStream/OutputStream 和File 以及URL classes.html
閉包的使用能夠確保資源被正確的關閉,好比遍歷文件的每一行能夠使用下面的代碼:閉包
1 |
new File( "foo.txt" ). eachLine { line -> println (line) } |
若是在某些狀況下,println()方法拋出了異常,那麼eachLine()方法將確保資源被正確的關閉,一樣的,若是在讀取的時候發生了異常,那麼資源也將會被正確的關閉。spa
若是你但願使用在reader/writer object或者input/output stream object的時候,有一些輔助方法來幫助你處理資源的關閉,那麼這個時候你能夠使用閉包。他將自動的在異常發生的時候關閉全部的資源,好比下面的代碼:code
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!' ) |
以及:orm
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 Informationhtm