2009-12-28 38 views
1

我相信File.foreach('input.txt')会一次读取一行文件。虽然不能罚款任何文件。任何人都可以证实吗?ruby​​j处理大量文件

另外我想创建一个巨大的文件来测试File.forach和File.open之间的区别。如果文件非常大,则File.open应该失败,并且File.foreach应该成功。任何人都知道任何漂亮的* nix技巧来创建一个非常快速的巨大文件?

更新:

在进一步阅读中,我发现了以下不同的方法来读取文件。不确定哪一个会尝试同时读取所有这些文件。将尝试一些案件,并会更新这篇文章。

f = File.open('input.txt') 
a = f.readlines 

f = File.open('input.txt') 
a = f.get 

f = File.open('input.txt') 
f.each_line{ |s| puts s} 

回答

1

File.foreach(“文件”)将创建文件中的行枚举,所以是它自己认为做的事。

dd if=/dev/random of=myfile.dat bs=$((1024 * 1024 )) count=1000 
0

没有什么特别的原因,open应该失败上一个真正的大:为了创建一个大文件快速使用这个(这将创建一个1 GB的文件,你可以,如果你需要的东西较大改变计数参数)文件。也就是说,open只是打开一个文件(用于读取,写入或附加)。它不会立即将文件写入内存。

在Ruby文档I/O方面,我会从这里开始:

http://ruby-doc.org/core/classes/IO.html