全面剖析Ruby隨機存取文件
對于一個剛剛學習編程語言不久的朋友來說對于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隨機存取文件的各種方法介紹,希望對大家有所幫助。