对于一个刚刚学习编程语言不久的朋友来说对于Ruby语言可能还是有些陌生的。它是一种新兴的解释型脚本语言。如果你想实现Ruby随机存取文件,你能够使用seek方法。#t#
它是File从Io继承而来的.它的最简单的使用就是指定一个字节位置.这个位置是相对于文件开始的位置(开始的位置是0):
- # myfile contains
only: abcdefghi - file = File.new("myfile")
- file.seek(5)
- str = file.gets# "fghi"
如果你能确定每一行都是固定的长度,你就能seek指定的行进行Ruby随机存取文件:
- # Assume 20 bytes per line.
- # Line N starts at byte (N-1)*20
- file = File.new("fixedlines")
- file.seek(5*20)# Sixth line!
- # 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
rewind方法将会将文件指针的位置设回到开始的位置,也就是0.
以上就是Ruby随机存取文件的各种方法介绍,希望对大家有所帮助。