2013-04-16 65 views
1

我需要在打开的文件中移动指针。我该如何做这样的事情?如何移动文件指针

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

在我的例子,我需要用我的文字替换最后一个字符

更新 我成功地完成了任务,但它看起来冗长和无效的:

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/正在down atm :( – leemour

+0

@leemour你能给出一个简短的非技术性描述你想要什么吗?可能是我们可以建议的事情。 –

回答

3

尝试f.seek(-1, IO::SEEK_END)

(我发现这对http://ruby-docs.com/docs/ruby_1.9.3/index.html

编辑

我能这样改写换行符终止文件的最后(非断行)字符:

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