我如何从文件的开头(第一行)读取ruby中的文本文件?
例如这段代码:
while line = file.gets
[code here]
end
从第一行读到最后一行并且STOPS。
但是,我想从第一行重新开始,一直扫描到最后一行。
有什么办法吗?
感谢。
答案 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
将其还原为开头。