可能是一个简单的问题,但我需要在特定的行号后删除文件的内容?因此,我不想保留第一行,例如5行,并删除文件的其余内容。我一直在寻找并找不到办法,我是iOS开发人员,因此Ruby不是我非常熟悉的语言。
答案 0 :(得分:5)
这称为truncate。 truncate方法需要字节位置,之后所有内容都会被截断 - 而File.pos
方法只能提供:
File.open("test.csv", "r+") do |f|
f.each_line.take(5)
f.truncate( f.pos )
end
File.open中的“r +”模式是读写的,不会将现有文件截断为零大小,如“w +”那样。
File.open的块形式确保在块结束时关闭文件。
答案 1 :(得分:2)
我不知道从文件中删除任何方法,所以我首先想到的是读取文件然后回写它。像这样:
path = '/path/to/thefile'
start_line = 0
end_line = 4
File.write(path, File.readlines(path)[start_line..end_line].join)
File#readlines
读取文件并返回一个字符串数组,其中每个元素都是文件的一行。然后,您可以将subscript operator with a range用于所需的行
对于大型文件来说,这不会对内存有效,所以如果你正在做的话,你可能想要进行优化。