Ruby 当我知道文件存在时,在Dir.foreach块期间获取Errno::enoint?

Ruby 当我知道文件存在时,在Dir.foreach块期间获取Errno::enoint?,ruby,file,foreach,directory,Ruby,File,Foreach,Directory,我当前将路径设置为: $: << "C:/Users/fireforkingjesus/ruby/note/" 如果我写下这段代码,它就可以正常工作了: Dir.foreach("notes/"){|file| puts file} 产出: . .. !IMPORTANT just.txt inventory.txt weapons.txt 但这些代码不起作用: Dir.foreach("notes/"){|file| puts file if File

我当前将路径设置为:

$: << "C:/Users/fireforkingjesus/ruby/note/"
如果我写下这段代码,它就可以正常工作了:

Dir.foreach("notes/"){|file| puts file}
产出:

.  
..  
!IMPORTANT   
just.txt  
inventory.txt   
weapons.txt
但这些代码不起作用:

Dir.foreach("notes/"){|file| puts file if File.exist?(file)}
上述^^^将

.    
..

返回
true
2次和
false
4次

Dir.foreach("notes/"){ |file|  puts File.ftype(file)}
上面的^^返回:“没有这样的文件或目录-!重要”(Errno::enoint)

我甚至做过这样的事:

f = "inventory.txt"    
puts "yes before foreach" if File.exist?("notes/inventory.txt")     
Dir.foreach("notes/"){ |file|     
  puts "yes in foreach" if File.exist?("inventory.txt")     
  puts File.ftype(f)     
}
我得到:

yes before foreach    
No such file or directory -inventory.txt (Errno::ENOENT)`
我有Ruby 2.0和Windows 8。我想也许吧?或者什么idk
我还在我爸爸的Win vista上试用过它

仔细看看你的输出:

Dir.foreach("notes/"){|file| puts file}
# ----------^^^^^^^^
产生:

.
..
!IMPORTANT
just.txt
inventory.txt
weapons.txt
正在将基名称传递给块,因此如果
Dir
未查看当前目录,则必须重新打开路径:

Dir.foreach("notes/") { |file| puts File.ftype("#{notes}/file") }

使用
一切都很好。
当然,每个目录中都有它们。

你说得很对。事实上,我刚刚明白了这一点,并开始回答我自己的问题。谢谢你的帮助。
.
..
!IMPORTANT
just.txt
inventory.txt
weapons.txt
Dir.foreach("notes/") { |file| puts File.ftype("#{notes}/file") }