如果我想返回文件的开头,最好使用它
f.seek(0)
Run Code Online (Sandbox Code Playgroud)
要么
f.rewind
Run Code Online (Sandbox Code Playgroud)
对于示例"f"文件句柄?或者只是一个偏好问题?
他们不是一回事,所以更好地取决于意图.seek只是移动当前的偏移量:
seek(amount,whence = IO :: SEEK_SET)→0
根据whence的值寻找流中给定的偏移量anInteger:...
倒带→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因为它直接表达了我的意图.