这里介绍了 File.truncate
:
truncate(file_name, integer) → 0
将文件
file_name
截断为最多integer
字节长。不是所有平台都支持此功能。
因此,您可以这样说:
File.truncate(file_name, File.size(file_name) - 1)
这应该会通过一次系统调用来截断文件,以调整文件系统中文件的大小,而不需要复制任何内容。
请注意,并非所有平台都可用的警告。 File.truncate
应该在任何类Unix系统(例如Linux或OSX)上都可以使用,但我对Windows支持无法提供有用信息。
我猜您是指一个文本文件。更改它的常规方法是读取它,进行更改,然后写入一个新文件:
text = File.read(in_fname)
File.write(out_fname, text[0..-2])
in_fname
中输入您要读取的文件名,在out_fname
中输入您要写入的文件名。它们可以是同一个文件,但如果这是您的意图,则更安全的方法是先写入一个临时文件,然后将临时文件复制到原始文件,最后删除临时文件。这样,如果在操作完成之前发生错误,您可能仍然拥有原始或临时文件。text[0..-2]
是一个由除最后一个字符外所有读取的字符组成的字符串。您也可以选择这样做: File.write(out_fname, File.read(in_fname, File.stat(in_fname).size-1))
IO
既有公共类方法,又有公共实例方法。我错误地指向了实例方法。 @bjhaid 给出了类方法的引用。 - Cary Swoveland
File.truncate(file_name, File.size(file_name) - 2)
(删除CR + LF)。 - knut