'File.read'和'IO.read'有什么区别?

use*_*052 30 ruby io ruby-on-rails file ruby-on-rails-3

我正在使用Ruby和Ruby on Rails 3,我想知道......

......有什么区别

File.read("filename.txt")
Run Code Online (Sandbox Code Playgroud)

IO.read("filename.txt")
Run Code Online (Sandbox Code Playgroud)

ALo*_*LoR 32

因为File是IO的子类,并且它没有read方法,所以在调用File.read时,实际上调用IO.read没有区别.

  • 令人惊讶的是,这里没有对这个旧答案发表评论。IO.read 并不完全相同:`IO.read('| whoami') # => "sourav\n"`。但是 `File.read('| whoami')` 会引发 Errno::ENOENT。因此,当涉及到读取用户给定的值(安全性很重要)时,IO.read 并不安全。Rubocop 也对此发出警告。 (2认同)

Jam*_*hen 16

File是IO的子类,而File.read只是IO.read(File类没有这个方法,所以当调用read调用IO.read时).