为什么Ruby的File#read
和File#readlines
只能使用一次?
例如:
txt = File.open "test.txt"
puts txt.read # returns the content
puts txt.read # returns ""
答案 0 :(得分:16)
当您致电File.open
时,您正在打开文件的 I / O流。在内部,流有一个“光标”,表示你从上次读取的部分。当你没有长度参数调用File#read
时,它会从光标(当你打开它时从文件的开头开始)读取,直到流的结尾,即文件的结尾。这样,光标也移动到文件的末尾。如果你再次调用read
,那么光标仍然在文件的末尾,并且由于没有更多内容可供阅读,因此不返回任何内容(""
)。
如果您需要再次读取文件,可以使用File#rewind
将光标移回流的开头。