IO读取不读取整个文件

时间:2015-08-05 13:41:00

标签: ruby ruby-1.9.3

我有一个非常大的文本文件,958 MB我已经创建了以下脚本

f = IO.read ("Playback.xml").encode ("utf-8", replace: nil)    
separate_files_array = f.scan /strong text<Bla>.*?<\/Bla>/
counter=0
separate_files_array.each do |x|
    .
    .
    .
end

以下代码仅迭代该正则表达式的前31个出现 - 我不知道为什么。

不,这些都不会发生,我可以看到它没有,并且脚本运行了几秒钟 - 这对于大小的文件没有任何意义

1 个答案:

答案 0 :(得分:0)

问题是IO.read在默认情况下创建缓冲区 - 并且只加载部分文件到缓存 - 最后我使用以下内容来回答我的问题

Regexp search through a very large file

原因是因为File.read没有在默认情况下创建缓冲区 - 当使用太大的文件时会导致程序崩溃。