2

我目前将路径设置为:

$: << "C:/Users/fireforkingjesus/ruby/note/"

我在这个文件夹中有这些东西:ruby/note/notes/

!IMPORTANT - folder
just.txt
inventory.txt
weapons.txt

如果我把这段代码工作正常:

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

输出:

.  
..  
!IMPORTANT   
just.txt  
inventory.txt   
weapons.txt

但是这些代码不起作用:

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

上面这个^^放

.    
..

Dir.foreach("notes/"){|file| puts File.exist?(file)}

返回true2 次和false4 次

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

以上^^返回:“没有这样的文件或目录-!IMPORTANT”(Errno::ENOENT)

我什至这样做过:

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 上试过

4

1 回答 1

1

仔细看看你的输出:

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

产生:

.
..
!IMPORTANT
just.txt
inventory.txt
weapons.txt

Dir.foreach正在将基本名称交给块,因此如果Dir不查看当前目录,则必须重新打开路径:

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

一切正常...当然,每个目录中都存在这些。

于 2013-11-15T01:28:43.933 回答