2012-06-30 55 views
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流爲什麼IO#LINENO doen't送花兒給人指示IO#下一次讀點讀

f.lineno 

#=>0 

回答

3

下一個讀取點從Ruby IO docslineno不會告訴你在流中的位置。相反,它會告訴你有多少次被調用。由於read函數不使用gets,所以lineno值不會更改。

你可能想要的是pos,它告訴你文件中的當前偏移量(以字節爲單位)。您也可以設置pos跳轉到文件中的其他位置。

+0

非常明確的答案,也許IO#tell是IO $ pos的別名 – mko