寻找“0”或使用倒带方法?(此为提问标题,无需回答)

3
如果我想回到文件的开头,使用哪种方法更好?
f.seek(0)

或者
f.rewind

对于示例中的“f”文件句柄,这是个人偏好还是必须使用它?
1个回答

8
它们并不完全相同,因此更好取决于意图。 seek 只是在当前偏移量周围移动:

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

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

rewind 还调整 lineno

rewind → 0

ios 定位到输入开始位置,并将 lineno 重置为零。

因此, f.rewind 或多或少与以下内容相同:

f.seek(0)
f.lineno = 0

如果您查看MRI C实现,您会发现rewind与Ruby中的实现方式相同,只是用C语言实现而已。
因此,如果您正在处理二进制数据(即没有行号),或者您确定不关心行号,则f.seek(0)f.rewind在功能上是等效的。
我倾向于使用rewind,因为它直接表达了我的意图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接