我的REST API包含程序中有两个类:Wrapper::Folder
和Wrapper::File
。每个文件夹可以包含许多文件夹和文件。文件夹的内容可以通过.list.
类方法重新获得。
我想为.all
实现Wrapper::File
类方法,该方法将返回所有文件夹中所有文件的数组。
以下方法不起作用,但会显示我想要的内容。
class Wrapper::File
def self.all
folders = Wrapper::Folder.list('/')
files = []
while folders.size > 0
folders.each do |object|
if object.is_a?(Wrapper::Folder)
folders = Wrapper::Folder.list('/')
else
files << object
end
end
end
end
end
答案 0 :(得分:0)
未经测试,但这将是递归解决方案的基本要点。将返回一个文件名数组(带路径)和没有目录。
def getFilesRecursive(path)
# create our directory object and file list storage
d = Dir.new(path)
l = Array.new
# iterate over our given directory
d.each do |f|
# exclude . and ..
if !(f =~ /$[\.]{1,2}^/)
# recurse on a directory
if File.directory?(f)
l += getFilesRecursive(path + f)
# store on a file
else
l.push(path + f)
end
end # if not . or ..
end # Dir.each
# return our list of files
return l
end # getFlesRecursive()
# let's get some files!
files = getFilesRecursive("/")