@Fenderas

Как правильно записывать строки в текстовом файле?

Добрый день. Использую Ruby 2.1.2, ОС FreeBSD 9.2. Необходимо править текстовый файл, но ни как не могу сделать так, чтобы изменения сохранялись.

Сейчас использую вот такой код:
f = File.open("/tmp/test.conf", "a+")

f.each_line do |line|
	puts line.gsub!(/\/(.*)/, "99999")
end

f.close

То, что строка находится и заменяется, puts показывает, но вот ни как не получается сохранить изменения. После закрытия файл имеет исходное состояние.
Прошу наставить меня на путь истинный:).
  • Вопрос задан
  • 2273 просмотра
Пригласить эксперта
Ответы на вопрос 2
@s1dney
Ваш код открывает файл на запись в конец файла
затем изменяет каждую строку по подстроке
и закрывает

но не пишет ничего в файл
Ответ написан
Комментировать
@vsuhachev
File.open("/tmp/test.conf", "r") do |in|
  File.open("/tmp/tmp_test.conf", "w") do |out|
    in.each_line { |line| out.puts line.gsub(/\/(.*)/, "99999") }
  end
end


В общем случае по месту в самом файле что-то менять нельзя, нужно писать результат в новый файл. Вернее замена возможна байт в байт, а не так как у вас по .*
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы