2010-09-15 64 views
7

我想知道是否有任何整潔的方式從Groovy寫入新文件。我有以下腳本:如何在Groovy中整齊地打印新行?

new File("out.txt").withWriter{ writer -> 
    for(line in 0..100) { 
      writer << "$line" 
    } 
} 

我可以使用writer << "$line\n"writer.println("$line"),但我wondring如果有任何方式使用<<運營商要追加新行我。

回答

5

你可以使用元編程來創建功能。一個簡單的解決方案來改變運營商的行爲將是使用自定義類別。

例子:

class LeftShiftNewlineCategory { 
    static Writer leftShift(Writer self, Object value) { 
     self.append value + "\n" 
    } 
} 
use(LeftShiftNewlineCategory) { 
    new File('test.txt').withWriter { out -> 
     out << "test" 
     out << "test2"  
    } 
} 

更多類別的位置: http://docs.codehaus.org/display/GROOVY/Groovy+Categories

+0

這是很好的東西。我剛剛開始使用Groovy,並沒有意識到這一點。我必須檢查出來!謝謝xlson。 – 2010-09-15 15:37:20

+0

不客氣! :)有許多不同的方法可以在Groovy中使用元編程來增強現有的API。類別(imho)的好處在於它們的作用範圍是,不會改變所有程序中的行爲。如果您想了解更多關於Groovy元編程的內容,請參閱這篇介紹:http://www.ibm.com/developerworks/java/library/j-pg06239.html – xlson 2010-09-15 18:37:48

0

你試過

writer << "$line" << "\n" 

這是簡寫

writer << "$line" 
writer << "\n" 
5

這是一個不錯的主意,要求系統正確的行分隔符,因爲這些可以在操作系統之間變化。

writer << "Line 1" + System.getProperty("line.separator") + "Line 2" 
+0

某些系統需要\ n,其他需要\ r \ ñ。很難說清楚,所以讓系統根據這個例子計算出來。 – Spider 2016-10-07 08:25:16