Ruby从文件开头不断读取

时间:2014-02-14 15:58:12

标签: ruby

我如何从文件的开头(第一行)读取ruby中的文本文件?

例如这段代码:

while line = file.gets
[code here]
end

从第一行读到最后一行并且STOPS。

但是,我想从第一行重新开始,一直扫描到最后一行。

有什么办法吗?

感谢。

2 个答案:

答案 0 :(得分: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 :(得分:2)

使用file.rewind将其还原为开头。