2010-07-23 4 views
1

기존 파일을 r + 모드로 열었습니다.파일의 특정 행에 행 삽입

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

끝에 내가 줄 번호 10. "안녕하세요"2 "세계"줄에 줄 번호에 "히"를 삽입하려는처럼 .. 어떤 특정 라인에서 을 다른 행을 삽입 할

숫자 20.

어떻게 루비에서 처리 할 수 ​​있습니까 ??

답변

6

:이 파일 조작 오프 한 내 패턴이

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 
+2

나는 약간의 수정을해야했다 : f.write sdat 그리고 f.write rest. 또한 sdat에 새로운 행이 있는지 확인해야합니다 (원하는 경우). – nilanjan

+1

예상대로 작동하도록 수정 된 코드. 그랬던 것처럼, 그것은 단지 ok라는 파일에 배열을 삽입했을뿐입니다 (''한 줄에 나머지 문서 '). 좋은 기여 @jdeseno! – JGutierrezC

1

이것은 Ruby에서 가장 좋은 방법은 아니지만 일반적으로 과거에이 작업을 수행해야 할 때 전역 적으로 고유 한 이름의 출력 파일을 열어 한 줄씩 읽거나 쓰고 다른, 길을 따라 선 수 유지. (그것을 유지하기 위해 세계에서 가장 큰 것은 아니지만, 구현하는 것은 매우 간단)

이 과거에 나를 위해 일했다
+0

입니다 I 수행해야합니다. 루비 (Luvy)를 사용하는 대신에 오랫동안 훌륭한 수식을 사용하는 루비 (Ruby)를 사용합니다. – holaSenor