如何在Groovy中整齐地打印新行?

Tom*_*icz 8 groovy

我想知道是否有任何巧妙的方法可以将新行写入Groovy的文件中.我有以下脚本:

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

我可以使用writer << "$line\n"或者writer.println("$line"),但是如果有任何方法可以使用<<运算符为我添加新行,我会感到非常满意.

xls*_*son 6

您可以使用元编程来创建该功能.更改<<运算符的行为的简单解决方案是使用自定义类别.

例:

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"    
    }
}
Run Code Online (Sandbox Code Playgroud)

有关类别的更多信息,请访问:http: //docs.codehaus.org/display/GROOVY/Groovy+Categories


小智 6

向系统询问正确的行分隔符是个好主意,因为这些可以在操作系统之间进行更改.

writer << "Line 1" + System.getProperty("line.separator") + "Line 2"
Run Code Online (Sandbox Code Playgroud)


小智 5

或者你可以只使用三个双引号

例如

def multilineString = """
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
"""
println multilineString
Run Code Online (Sandbox Code Playgroud)

参考: http: //grails.asia/groovy-multiline-string