繁体   English   中英

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

[英]Ruby - Delete the last character in a file?

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

我看了一下用Ruby 删除文件最后一行的答案但是没有完全理解它,并且必须有一个更简单的方法。

有帮助吗?

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支持。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM