我需要一个递归函数来列出文件夹中的文件:

def procdir(dirname)
  data = ''
  Dir.foreach(dirname) do |dir|
    dirpath = dirname + '/' + dir
    if File.directory?(dirpath) then
      if dir != '.' && dir != '..' then
        #puts "DIRECTORY: #{dirpath}" ;
        procdir(dirpath)
      end
    else
      data += dirpath
    end
  end
  return data
end

但结果:为空

最佳答案

当您给它Dir#glob glob时,Stdlib ** 会递归。

def procdir(dir)
  Dir[ File.join(dir, '**', '*') ].reject { |p| File.directory? p }
end

10-04 20:46