rails有没有办法实现像Node js这样的读取流来读取文件?
即
fs.createReadStream(__dirname + '/data.txt');
如附
fs.readFile(__dirname + '/data.txt');
我看到红宝石的地方有
file = File.new("data.txt")
我不确定用于创建流的 ruby/rails 中的等效项,并想知道这是否可能。我问的原因是内存管理,因为流将作为附加到一个完整文件时逐个交付。
如果你想逐
个读取 Ruby 中的文件,有很多方法可供你使用。
-
IO#each_line
/IO::foreach
,也在File
中实现以迭代文件的每一行。两者都不会将整个文件读入内存;相反,两者都只是读取直到下一个换行符、返回和暂停读取,除非可能的缓冲区。 -
IO#read
/IO::read
采用一个length
参数,该参数允许您指定它从文件中读取最多length
个字节。这只会阅读那么多,而不是全部。 -
IO::binread
与IO::read
相同,但将以二进制模式打开文件。 -
IO#readpartial
看起来与IO#read
非常相似或相同,但也值得一看。 - 据我所知,
IO#getc
和IO#gets
都从文件中读取,直到它们到达它们将返回的内容的末尾。
我现在正在寻找更多。