Как аккуратно напечатать новую строку в Groovy? - PullRequest
8 голосов
/ 15 сентября 2010

Мне было интересно, есть ли какой-нибудь аккуратный способ записать новую строку в файл из Groovy.У меня есть следующий скрипт:

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

Я мог бы использовать writer << "$line\n" или writer.println("$line"), но мне было интересно, есть ли способ использовать оператор << для добавления новой строки для меня.

Ответы [ 4 ]

6 голосов
/ 15 сентября 2010

Вы можете использовать метапрограммирование для создания этой функциональности. Простым решением изменить поведение оператора << было бы использование пользовательской категории. </p>

Пример:

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

6 голосов
/ 18 сентября 2014

Хорошая идея - запросить у системы правильный разделитель строк, так как они могут меняться в разных операционных системах.

writer << "Line 1" + System.getProperty("line.separator") + "Line 2"
0 голосов
/ 26 января 2019

Или вы можете использовать три двойные кавычки

, например

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

Ссылка: http://grails.asia/groovy-multiline-string

0 голосов
/ 15 сентября 2010

Вы пробовали

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

Это сокращение от

writer << "$line"
writer << "\n"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...