【发布时间】:2014-04-15 18:37:27
【问题描述】:
我是 Ruby 的新手,我正在编写一个测试程序来降低一些特性。这是程序
#!/usr/bin/env ruby
class FileManager
def read_file(filename)
return nil unless File.exist?(filename)
File.read(filename)
end
end
if __FILE__ == $0
fm = FileManager.new
puts "What file would you like to open?"
fname = gets
puts fm.read_file fname
end
如您所见,它非常简单。如果我注释 read_file 方法的第一行,我会收到此错误
No such file or directory - /Users/macuser/Projects/Aptana\ Studio\ 3\ Workspace/Ruby\ Test/text (Errno::ENOENT)
from /Users/macuser/Projects/Aptana Studio 3 Workspace/Ruby Test/ruby.rb:6:in `read_file'
from /Users/macuser/Projects/Aptana Studio 3 Workspace/Ruby Test/ruby.rb:15:in `<main>'
当我运行程序并使用这个文件时:/Users/macuser/Projects/Aptana\ Studio\ 3\ Workspace/Ruby\ Test/text
但是,如果我运行cat /Users/macuser/Projects/Aptana\ Studio\ 3\ Workspace/Ruby\ Test/text,它会输出Hello, world!,这是应该的。
我不认为这是权限问题,因为我拥有该文件夹,但以防万一我尝试以 root 身份运行该程序。另外,我已经确定 fname 是文件的实际名称,而不是 nil。我已经尝试了路径的转义和非转义版本,以及 text 或完整路径。我知道文件存在的事实,那么为什么 Ruby 会给我这个错误?
【问题讨论】: