我相信File.foreach('input.txt')会一次读取一行文件。虽然无法对任何文档进行罚款。任何人都可以确认吗?
此外,我想创建一个巨大的文件来测试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}
答案 0 :(得分:1)
File.foreach(“file”)将为文件中的行创建一个枚举器,所以是的,它会执行您认为它的操作。为了快速创建一个大文件(这会创建一个1 GB的文件,如果你需要更大的东西,可以更改count参数):
dd if=/dev/random of=myfile.dat bs=$(( 1024 * 1024 )) count=1000
答案 1 :(得分:0)
open
在一个非常大的文件上失败没有特别的原因。也就是说,open
只打开一个文件(用于阅读,写作或追加)。它不会立即将文件粘贴到内存中。
就I / O的Ruby文档而言,我将从这里开始: