2016-01-19 2 views
3

Вместо добавления в конец файла, я пытаюсь заменить или добавить на определенную строку с помощью groovy File.Использование groovy для добавления к определенному номеру строки в файле

Есть ли способ для этого? append добавляет в конец файла во время записи перезаписывает существующий файл:

def file = new File("newFilename") 
file.append("I wish to append this to line 8") 
+0

Я не в курсе линии, знают Groovy библиотеку файлов обработки; должен иметь возможность использовать обычные библиотеки Java (по умолчанию или сторонние). –

ответ

1

Для небольших файлов, которые вы можете использовать следующий фрагмент кода:

def f = new File('file') 
def lines = f.readLines() 
lines = lines.plus(7, "I'm a new line!") 
f.text = lines.join('\n') 
+0

, похоже, что он добавит новую строку 8 вместо добавления к текущей строке 8. – billjamesdev

+0

@billjamesdev, это не имеет значения. Это просто показывает общий подход. – Opal

4

В общем, с Java и Groovy обработки файлов, вы может добавляться только к концу файлов. Невозможно вставить информацию, хотя вы можете переписывать данные в любом месте, не меняя положения следующего.

Это означает, что для добавления к определенной строке, которая не находится в конце файла, вам необходимо переписать весь файл.

Например:

def file = new File("newFilename") 
new File("output").withPrintWriter { out -> 
    def linenumber = 1 
    file.eachLine { line -> 
     if (linenumber == 8) 
      out.print(line) 
      out.println("I wish to append this to line 8") 
     } else { 
      out.println(line) 
     } 
     linenumber += 1 
    } 
} 
Смежные вопросы