如果我想返回文件的开头,最好使用
f.seek(0)
或
f.rewind
示例“f”文件句柄?或者只是一个偏好的问题?
答案 0 :(得分:7)
他们并不完全相同,所以更好取决于意图。 seek
只是移动当前的偏移量:
寻求(金额,来自= IO :: SEEK_SET)→0
根据 whence 的值,在流中寻找给定的偏移 anInteger :...
快退→0
将 ios 定位到输入的开头,将 lineno 重置为零。
所以f.rewind
或多或少与:
f.seek(0)
f.lineno = 0
如果你看一下MRI C的实现,你会发现rewind
就是这样实现的,但在C而不是Ruby中。
因此,如果您正在处理二进制数据(即没有行号)或者您确定不关心行号,那么f.seek(0)
和f.rewind
功能相同。
我倾向于使用rewind
,因为它直接表达了我的意图。