0
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
4

1 回答 1

3

Ruby IO docs中,lineno不会告诉您在流中的位置。相反,它告诉您 get 被调用了多少次。由于read函数不使用getslineno值不会改变。

您可能想要的是pos,它以字节为单位告诉您文件中的当前偏移量。您还可以设置pos跳转到文件中的不同位置。

于 2012-06-30T05:46:35.703 回答