Groovy: копиране на файл, като същевременно конвертирате краища на редове

Използвам Groovy, за да персонализирам плъгина за сглобяване на Maven и да направя живота си малко по-лесен. По принцип бих искал да имитирам функционалността на плъгина на Maven Assembly и едната е да копирам файлове, докато преобразувам краища на редове.

Кой е най-лесният начин за копиране на файл от A до B, докато преобразувате краища на редове в Unix стил?


person Denis Kulagin    schedule 31.03.2014    source източник


Отговори (1)


Можете да направите това (ако приемем, че файлът не е твърде голям, тъй като го зарежда целия в паметта)

void convertCRLF( File input, File output ) {
    output << input.text.replaceAll( '\r\n', '\n' )
}

convertCRLF( new File( '/tmp/test.txt' ), new File( '/tmp/test.fix.txt' ) )

Или може би можете да опитате AntBuilder с задачата FixCRLF

Пример за това би бил:

new AntBuilder().fixcrlf( srcDir:'/tmp/inputs', eol:'lf' )

Което ще преобразува всички файлове в /tmp/inputs да използват lf като край на реда

person tim_yates    schedule 31.03.2014
comment
Не харесвам това решение, защото се основава на някакво предположение за това как е форматиран първоначалният файл (в стила на Windows в примера). Нямам такава информация. Има ли начин да конвертирате ВСЕКИ текстов файл в Unix стил? - person Denis Kulagin; 31.03.2014
comment
@DenisKulagin Ако е базиран на unix (само с \n), няма да го пипа. Ще разгледам пример за задачата AntBuildter - person tim_yates; 31.03.2014
comment
Да, няма да стане. Но ако се опитам да конвертирам файл по друг начин, това ще генерира неприятна комбинация от \r и \r\n. - person Denis Kulagin; 31.03.2014
comment
@DenisKulagin Добавен пример за използване на задачата fixcrlf чрез AntBuilder - person tim_yates; 31.03.2014