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

时间:2009-07-27 20:18:45

标签: ruby file

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

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

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

3 个答案:

答案 0 :(得分:6)

我不会试图猜测你要做什么,但是如果你试图摆脱XML文件中根元素的结束标记,那么你可以添加更多的子标记,< em>然后重新添加结束的根标记,我想可能有ruby模块可以帮助编写/编辑XML。只是说。

也许是Builder:

hpricot似乎也有效:

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

最简单的方法就是阅读整个文件,删除最后的'\ 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
}
相关问题