ruby - 寻找 "0"或使用倒带方法?

标签 ruby file

如果我想返回到文件的开头,使用

会更好吗?
f.seek(0)

f.rewind

例如“f”文件句柄?或者这只是一个偏好问题?

最佳答案

它们并不完全相同,所以更好取决于意图。 seek只是移动当前偏移量:

seek(amount, whence=IO::SEEK_SET) → 0

Seeks to a given offset anInteger in the stream according to the value of whence: ...

但是rewind还调整了lineno :

rewind → 0

Positions ios to the beginning of input, resetting lineno to zero.

所以 f.rewind 或多或少与:

f.seek(0)
f.lineno = 0

如果您查看 MRI C 实现,您会发现 rewind 就是这样实现的,但是是用 C 而不是 Ruby 实现的。

因此,如果您正在处理二进制数据(即没有行号)或者您确定您不关心行号,那么 f.seek(0) f.rewind 在功能上是等价的。

我倾向于使用rewind,因为它直接表达了我的意图。

关于ruby - 寻找 "0"或使用倒带方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977368/

相关文章:

c# - 读取另一个进程使用的文件

ruby-on-rails - Rails ActiveRecord id 的最大可能值

ruby-on-rails - 在 ruby​​ on Rails 中获取 URL 的主机名

ruby-on-rails - 尝试加载 gem 'rmagick' 时出错。 ( bundler ::GemRequireError)

java - 如何创建一个将在 JVM 终止时自动删除的临时目录?

file - 多个小文件作为 MapReduce 的输入

java - 如何使用 JAVA 设置文件的通用属性,如标题、主题、评论、公司等

mysql - 如何在 Ubuntu 16.04 中通过 XAMPP 在 Rails 中使用 MySQL

ruby - 如何在 Cucumber with Pickle 中使用命名的 Machinist 蓝图

javascript - 如何将输入文件对象序列化为 JSON?