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

Fre*_*sen 2 ruby file

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

f.seek(0)
Run Code Online (Sandbox Code Playgroud)

要么

f.rewind
Run Code Online (Sandbox Code Playgroud)

对于示例"f"文件句柄?或者只是一个偏好问题?

mu *_*ort 7

他们不是一回事,所以更好地取决于意图.seek只是移动当前的偏移量:

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

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

而且rewind还调整lineno:

倒带→0

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

所以f.rewind或多或少相同:

f.seek(0)
f.lineno = 0
Run Code Online (Sandbox Code Playgroud)

如果你看一下MRI C的实现,你会看到它rewind实现就像那样但是在C而不是Ruby中.

因此,如果你处理二进制数据(即没有行号),或者你确定你不关心行号,然后f.seek(0)f.rewind在功能上等同.

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