如何删除Ruby中的最后一行文件?

我正在访问一个文件,在我追加它之前,我想从文件中删除最后一行。 在Ruby中有没有有效的方法呢?

这是我用来访问文件的内容:

file = File.new("imcs2.xml", "a") 

假设您要删除文件的整个最后一行,您可以使用此方法找到最后一行的开头并从那里开始写入:

 last_line = 0 file = File.open(filename, 'r+') file.each { last_line = file.pos unless file.eof? } file.seek(last_line, IO::SEEK_SET) #Write your own stuff here file.close 

我不打算猜测你想要做什么,但是如果你试图摆脱XML文件中根元素的结束标记,以便你可以添加更多子标记, 那么重新添加关闭的根标签,我会想象有一些ruby模块可以促进编写/编辑XML的任务。 只是在说。

也许Builder:

  • 类:Builder :: XmlMarkup
  • 项目构建器

hpricot似乎也有效:

  • Hpricot XML

最简单的方法是读取整个文件,删除最后的’\ n’,然后用自己的内容重写它:

 filename = "imcs2.xml" content = File.open(filename, "rb") { |io| io.read } File.open(filename, "wb") { |io| io.print content.chomp io.print "yourstuff" # Your Stuff Goes Here } 

或者,只有io.seek()向后翻过最后一个换行符(如果有的话):

 filename = "imcs2.xml" File.open(filename, "a") { |io| io.seek(-1, IO::SEEK_CUR) # -1 for Linux, -2 for Windows: \n or \r\n io.print "yourstuff" # Your Stuff Goes Here }