Ruby - 删除文件中的最后一个字符?

时间:2013-12-31 01:46:19

标签: ruby file-io

似乎一定很容易,但我无法弄明白。如何使用Ruby IO删除文件的最后一个字符?

我用Ruby查看了deleting the last line of a file的答案,但没有完全理解它,并且必须有一个更简单的方法。

任何帮助?

2 个答案:

答案 0 :(得分:8)

File.truncate

  

truncate(file_name,integer)→0

     

将文件file_name截断为最多integer个字节。不适用于所有平台。

所以你可以这样说:

File.truncate(file_name, File.size(file_name) - 1)

这应该通过单个系统调用来截断文件,以便在不复制任何内容的情况下调整文件系统中文件的大小。

请注意,并非在所有平台上都可用File.truncate应该可用于任何unixy(例如Linux或OSX),我不能说任何有用的Windows支持。

答案 1 :(得分:3)

我假设您指的是文本文件。通常的改变方法是阅读它,进行更改,然后写一个新文件:

  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))