为什么Ruby文件#read或File#readlines只能使用一次?

时间:2012-01-12 08:13:32

标签: ruby

为什么Ruby的File#readFile#readlines只能使用一次?

例如:

txt = File.open "test.txt"
puts txt.read  # returns the content
puts txt.read  # returns ""

1 个答案:

答案 0 :(得分:16)

当您致电File.open时,您正在打开文件的 I / O流。在内部,流有一个“光标”,表示你从上次读取的部分。当你没有长度参数调用File#read时,它会从光标(当你打开它时从文件的开头开始)读取,直到流的结尾,即文件的结尾。这样,光标也移动到文件的末尾。如果你再次调用read,那么光标仍然在文件的末尾,并且由于没有更多内容可供阅读,因此不返回任何内容("")。

如果您需要再次读取文件,可以使用File#rewind将光标移回流的开头。