我想知道是否有任何整潔的方式從Groovy寫入新文件。我有以下腳本:如何在Groovy中整齊地打印新行?
new File("out.txt").withWriter{ writer ->
for(line in 0..100) {
writer << "$line"
}
}
我可以使用writer << "$line\n"
或writer.println("$line")
,但我wondring如果有任何方式使用<<
運營商要追加新行我。
我想知道是否有任何整潔的方式從Groovy寫入新文件。我有以下腳本:如何在Groovy中整齊地打印新行?
new File("out.txt").withWriter{ writer ->
for(line in 0..100) {
writer << "$line"
}
}
我可以使用writer << "$line\n"
或writer.println("$line")
,但我wondring如果有任何方式使用<<
運營商要追加新行我。
你可以使用元編程來創建功能。一個簡單的解決方案來改變運營商的行爲將是使用自定義類別。
例子:
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
你試過
writer << "$line" << "\n"
這是簡寫
writer << "$line"
writer << "\n"
這是一個不錯的主意,要求系統正確的行分隔符,因爲這些可以在操作系統之間變化。
writer << "Line 1" + System.getProperty("line.separator") + "Line 2"
某些系統需要\ n,其他需要\ r \ ñ。很難說清楚,所以讓系統根據這個例子計算出來。 – Spider 2016-10-07 08:25:16
這是很好的東西。我剛剛開始使用Groovy,並沒有意識到這一點。我必須檢查出來!謝謝xlson。 – 2010-09-15 15:37:20
不客氣! :)有許多不同的方法可以在Groovy中使用元編程來增強現有的API。類別(imho)的好處在於它們的作用範圍是,不會改變所有程序中的行爲。如果您想了解更多關於Groovy元編程的內容,請參閱這篇介紹:http://www.ibm.com/developerworks/java/library/j-pg06239.html – xlson 2010-09-15 18:37:48