Ruby File ::目录?问题

前端之家收集整理的这篇文章主要介绍了Ruby File ::目录?问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是红宝石的新手,但是非常喜欢它.有些事情给了我一些麻烦,下面也不例外.

我想在这里做的是通过分类“Dir”创建一种“超级目录”.我添加了一个名为“subdirs”的方法,该方法旨在列出目录对象的文件,并将其推送到数组中,如果文件是目录本身.问题是,我的测试(File.directory?)的结果是否奇怪 – 这里是我的方法代码

def subdirs
    subdirs = Array.new
    self.each do |x|
      puts "Evaluating file: #{x}"
      if File.directory?(x)
        puts "This file (#{x}) was considered a directory by File.directory?"
        subdirs.push(x)
        #yield(x) if block_given?
      end
    end
    return subdirs
  end

奇怪的是,即使目录中有很多目录(“/ tmp”) – 此调用的结果仅列出“.”.和“..”

puts "Testing new Directory custom class: FileOps/DirClass"

nd   = Directory.new("/tmp")
subs = nd.subdirs

结果:

Evaluating file: mapping-root
Evaluating file: orbit-jvxml
Evaluating file: custom-directory
Evaluating file: keyring-9x4JhZ
Evaluating file: orbit-root
Evaluating file: .
This file (.) was considered a directory by File.directory?
Evaluating file: .gdmFDB11U
Evaluating file: .X0-lock
Evaluating file: hsperfdata_mishii
Evaluating file: .X11-unix
Evaluating file: .gdm_socket
Evaluating file: ..
This file (..) was considered a directory by File.directory?
Evaluating file: .font-unix
Evaluating file: .ICE-unix
Evaluating file: ssh-eqOnXK2441
Evaluating file: vesystems-package
Evaluating file: mapping-jvxml
Evaluating file: hsperfdata_tomcat

解决方法

您是否在/ tmp内执行脚本?我的猜测(我还没有尝试过)是File.directory?(x)测试当前目录中是否有一个名为x的目录 – 所以如果你从另一个目录运行,总是找到.而不是其他目录.

尝试将File.directory?(x)更改为File.directory?(“#{path}/#{x}”).

猜你在找的Ruby相关文章