全面剖析Ruby随机存取文件

对于一个刚刚学习编程语言不久的朋友来说对于Ruby语言可能还是有些陌生的。它是一种新兴的解释型脚本语言。如果你想实现Ruby随机存取文件,你能够使用seek方法。

它是File从Io继承而来的.它的最简单的使用就是指定一个字节位置.这个位置是相对于文件开始的位置(开始的位置是0):

  1. # myfile contains 
    only: abcdefghi   
  2. file = File.new("myfile")   
  3. file.seek(5)   
  4. str = file.gets# "fghi" 

如果你能确定每一行都是固定的长度,你就能seek指定的行进行Ruby随机存取文件:

  1. # Assume 20 bytes per line.   
  2. # Line N starts at byte (N-1)*20   
  3. file = File.new("fixedlines")   
  4. file.seek(5*20)# Sixth line!   
  5. # Elegance is left as an exercise. 

如果你想做一个相对的搜索,你就要使用第二个参数,常量 IO::SEEK_CUR表示当前的位置,而第一个参数则就是相对于当前位置的偏移量(可能是负数):

file = File.new("somefile")   


file.seek(55) # Position is 55   


file.seek(-22, IO::SEEK_CUR)
 # Position is 33   


file.seek(47, IO::SEEK_CUR)
# Position is 80 

你也能从文件的结束位置开始Ruby随机存取文件:

file.seek(-20, IO::SEEK_END)
 # twenty bytes from eof 

方法tell得到文件的当前位置,pos是它的别名:

file.seek(20)   


pos1 = file.tell # 20   


file.seek(50, IO::SEEK_CUR)   


pos2 = file.pos # 70  

相关推荐