我目前的路径设置为:
$: << "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)}
以上^^ put
.
..
和
Dir.foreach("notes/"){|file| puts File.exist?(file)}
返回true
2次,false
4次
Dir.foreach("notes/"){ |file| puts File.ftype(file)}
以上^^返回:“没有这样的文件或目录 - !重要”(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.我想可能是权限?或者别的东西 而且我也在我爸爸的胜利视野中试过它
答案 0 :(得分: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") }
当然,.
和..
一切正常,每个目录都存在。