f= File.open('path_to_file','w')
f.lineno
#=> 0
f.gets
#=>"this is the content of the first line"
f.lineno
#=>1 # the lineno cooresponse to the next read point of IO#gets
f.rewind
f.lineno
#=>0
f.read
#=>"all the content in the file"
f.lineno
#=>0 # the lineno still is the beginning
f.read
#=>"" # but I can't get anyting , it seems like the read point reach to the end of the file, so the f.lineno should be 3, instead of 0
或者是否有其他方法可以了解IO流的下一个读取点
f.lineno
#=>0
答案 0 :(得分:3)
从Ruby IO docs开始,lineno
不会告诉您流中的位置。相反,它告诉你已经调用了多少次。由于read
函数未使用gets
,因此lineno
值不会更改。
您可能需要的是pos
,它会以字节为单位告诉您文件中的当前偏移量。您还可以将pos
设置为跳转到文件中的其他位置。