Насколько я могу судить, у вас есть 2 варианта.
Если вы можете загрузить весь файл в память, вы можете сделать что-то вроде:
int countBlocksInMem( File f ) {
f.readLines().with { lines ->
int size = lines.grep { it == '' }.size()
if( lines[ -1 ] != '' ) size++
size
}
}
Если он слишком велик для загрузки в память, вы можете сделать:
int countBlocks( File f ) {
String lastLine
int size = 0
f.eachLine { line ->
lastLine = line
if( !line ) size++
}
if( lastLine ) size++
size
}
Оба метода в основном суммируют количество пустых строк, и, если последняя строка в файле не пуста, увеличьте счетчик на 1
Изменить после полного изменения вопроса
Чтобы добавить пустую строку в файл, вы можете просто сделать:
new File( 'file.txt' ) << '\n'
Или с писателем
new File( 'file.txt' ).withWriterAppend {
it.writeLine()
}
Конечно, если у вас есть несколько вещей, записывающих в один и тот же файл одновременно, это просто создаст беспорядок