2013-12-05 2 views
1

Мне интересно, как лучше всего читать файл (который я получаю в качестве аргумента), изменить определенную строку в нем (перебрать по всей строке пока я не найду тот, который мне нужен) и, наконец, сохраните новый измененный файл вместо старого.Groovy - прочитать файл, изменить его содержимое и вернуть его обратно

С уважением, Igor.

ответ

1

Вы должны были бы написать временный файл, а затем переименуйте файл temprorary перезаписать оригинал:

// Path to the original file 
def infile = 'in.txt' 

// Create a temp file 
def tmpFile = File.createTempFile('new', 'tmp') 

tmpFile.withWriter { w -> 

    // for each line in the input file 
    new File(infile).eachLine { line -> 

     // Modify the line if required 
     if(line.endsWith('2')) { 
      line = 'Modified' 
     } 

     // Write the line out to the temp file 
     w << line << '\n' 
    } 
} 

// Then rename the temp file to overwrite the original 
tmpFile.renameTo(infile) 
+0

Большое спасибо :) – Igor

+0

Быстрый вопрос - мне нужно, чтобы удалить «INFILE " в конце? – Igor

+0

Нет, его следует перенести на имя 'infile' (я тестировал его на OS X, и это так - Windows может немного поиграть с движущимися файлами) –

Смежные вопросы