2014-02-14 52 views
1

我如何從文件的開頭(第一行)讀取紅寶石文本文件?紅寶石從文件開頭連續讀取

例如這樣的代碼:

while line = file.gets 
[code here] 
end 

從第一行讀取到最後一行和停止。

但是,我想從第一行再次開始,並掃描到最後一行。

任何方式來做到這一點?

謝謝。

+3

你想無限讀取文件嗎? –

+0

啊我看到答案 – user3307307

回答

4

你寫的代碼是Ruby編程相當不尋常,大多數的文件被讀通過Enumerable方法行線,例如時間:

file.each { |line| [code here] } 

這就是說,你可以使用Enumerable#cycle方法多次讀取文件。鑑於下列文件,說foo.txt

foo 
bar 

您可以使用下面的代碼讀取它兩次:

open('foo.txt') do |file| 
    file.cycle(2) { |line| puts line }  
end 

# Output: 
# 
# foo 
# bar 
# foo 
# bar 

如果傳遞nil,或任何參數,以cycle它會永遠讀取文件。

+1

那很美。 – sawa

+0

非常感謝!這工作,因爲我需要它。 – user3307307

+0

對於任何人想做的事情,Ruby似乎都有一些方法;我總是發現新的。 – lurker

2

使用file.rewind將其恢復爲開始。

+0

道歉@sawa,我刪除了我的評論。 – lurker

+0

@mbratch謝謝。我並不特別感覺不好。我只是不希望人們認爲我複製了它。 – sawa