2013-04-16 1 views
1

열려있는 파일에서 포인터를 이동해야합니다. 이렇게하면 어떻게 할 수 있습니까?파일 포인터를 이동하는 방법

File.open('example.txt', 'r+') do |f| 
    contents = f.read[0...-1] 
    f.rewind 
    f.write contents + 'end' 
end 
+1

을 'IO # seek '이 필요한 것입니다. –

+1

http://ruby-doc.org/ atm :( – leemour

+0

@leemour 원하는 것을 간단히 기술이 아닌 설명을 줄 수 있습니까? 우리가 조언 할 수있는 좋은 것일 수도 있습니다. –

답변

3

f.seek(-1, IO::SEEK_END)을 시도해보십시오

나는이 작업을 완료하는 데 관리 업데이트 있지만 자세한 비효율적 보이는 내 예제에서

File.open('example.txt', 'a+') do |f| 
    f.move_pointer -1 
    f.write 'end' 
end 

나는 내 텍스트의 마지막 문자를 교체해야 .

는 (나는 http://ruby-docs.com/docs/ruby_1.9.3/index.html에서 이걸 발견)

편집

나는 이런 식으로 개행로 끝나는 파일의 마지막 (비 LINEBREAK) 문자를 덮어 쓸 수 있었다 :

File.open('example.txt', 'r+') do |f| 
    # go back 2 from the end, to overwrite 1 character and the final \n 
    f.seek(-2, IO::SEEK_END) 
    f.write("end\n") 
end 
+0

그게 작동하지 않습니다. 오프셋 값과 관계없이 텍스트를 바꾸는 대신 파일 끝에 파일을 씁니다. – leemour

관련 문제