Tomasz Blachowicz
Tomasz Blachowicz

Reputation: 5853

How to neatly print new line in Groovy?

I was wondering if there is any neat way to write new line into the file from Groovy. I have the following script:

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

I could use writer << "$line\n" or writer.println("$line"), but I was wondring if there is any way to use << operator to append the new line for me.

Upvotes: 15

Views: 81896

Answers (4)

ViceKnightTA
ViceKnightTA

Reputation: 111

Or you could just use three double-quotes

e.g.

def multilineString = """
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
"""
println multilineString

Reference: http://grails.asia/groovy-multiline-string

Upvotes: 8

It's a nice idea to ask the system for the correct line separator as these can change between operating systems.

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

Upvotes: 16

xlson
xlson

Reputation: 2747

You could use meta programming to create that functionality. An easy solution to change the behaviour of the << operator would be to use a custom category.

Example:

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"    
    }
}

More about categories here: http://docs.codehaus.org/display/GROOVY/Groovy+Categories

Upvotes: 6

Riduidel
Riduidel

Reputation: 22308

Have you tried

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

Which is shorthand for

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

Upvotes: 0

Related Questions