Вставить строки в определенную строку в файле - PullRequest
1 голос
/ 23 июля 2010

Я открыл свой существующий файл в режиме r +.

open ("# {RAILS_ROOT} /locale/app.pot", 'r +') do | f |

end

Я хочу вставить некоторые другие строки в конкретную строку № .. Как и я хочу вставить «Hii» в строке № 10. «Привет» в строке № 2. «Мир» в строке № 20.

Как я могу справиться с этим в рубине ??

Ответы [ 2 ]

6 голосов
/ 23 июля 2010

Это работало для меня в прошлом:

def write_at(fname, at_line, sdat)
  open(fname, 'r+') do |f|
    while (at_line-=1) > 0          # read up to the line you want to write after
      f.readline
    end
    pos = f.pos                     # save your position in the file
    rest = f.read                   # save the rest of the file
    f.seek pos                      # go back to the old position
    f.write sdat                    # write new data
    f.write rest                    # write rest of file
  end
end
1 голос
/ 23 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...