ruby File对象构造函数是否将整个文件加载到内存中

时间:2015-01-07 16:57:01

标签: ruby

我正在尝试了解创建ruby File对象时会发生什么。

需要注意的是,我是否可以在源树的一个分支上为文件创建File对象,然后切换分支,然后仍然可以通过初始文件对象访问上一个分支中的文件我创造了。

这样的事情:

repo = Rugged::Repository.new('path/to/repo/')
repo.checkout("test_branch")
file = File.new('path/to/repo/file.xml') 
repo.checkout("master")

file.read # hopefully reading a file from the `test_branch` 

我希望file.read现在可以从test_branch读取文件,即使我将回购文件签出回主分支。

这会有用吗?

1 个答案:

答案 0 :(得分:0)

File.new是懒惰的,不会将整个文件加载到内存中。您必须read才能获取内容。做一个简单的测试,创建一个文件,用File.new打开它并在阅读之前修改它的内容。