寻求" 0"或使用倒带方法?

时间:2015-01-16 04:36:04

标签: ruby file

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

f.seek(0)

f.rewind

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

1 个答案:

答案 0 :(得分:7)

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

  

寻求(金额,来自= IO :: SEEK_SET)→0

     

根据 whence 的值,在流中寻找给定的偏移 anInteger :...

rewind也会调整lineno

  

快退→0

     

ios 定位到输入的开头,将 lineno 重置为零。

所以f.rewind或多或少与:

相同
f.seek(0)
f.lineno = 0

如果你看一下MRI C的实现,你会发现rewind就是这样实现的,但在C而不是Ruby中。

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

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