Ruby 如何将目录的所有文件名读入数组?
我想将文件夹中的所有文件名存储到一个数组中。最好的方法是什么 您可以使用:Ruby 如何将目录的所有文件名读入数组?,ruby,Ruby,我想将文件夹中的所有文件名存储到一个数组中。最好的方法是什么 您可以使用: files = Dir.foreach(dir).select { |x| File.file?("#{dir}/#{x}") } 这将返回文件名,即不带文件夹 如果您需要完整的路径,请使用以下内容: files = Dir.foreach(dir) \ .map { |x| File.expand_path("#{dir}/#{x}") } \ .select { |x|
files = Dir.foreach(dir).select { |x| File.file?("#{dir}/#{x}") }
这将返回文件名,即不带文件夹
如果您需要完整的路径,请使用以下内容:
files = Dir.foreach(dir) \
.map { |x| File.expand_path("#{dir}/#{x}") } \
.select { |x| File.file?(x) }
您可以使用:
files = Dir.entries(directory)
返回一个数组,其中包含给定目录中的所有文件名
查看以获取更多信息。您也可以使用
files=Dir.glob(*)
我认为您的代码可以工作。这个错误是我的问题。非常感谢。@Kate:根据您的要求,这会提供文件夹中的文件名。如果你想要完整的路径,你需要使用我更新的答案中的第二个版本。是的,谢谢你,太棒了。@Kate:请查看更新。当dir
不是当前目录时,我以前的版本失败。很抱歉,是的,此版本没有错误,感谢您的额外努力。它还包括“.”和“.”。为什么要同时读取所有文件名?这不是一个可扩展的解决方案,因为一个文件夹可能包含数千个文件。我猜是3-10个文件。为什么这不是一个“真正的”问题?谁在乎OP想要这个?这里有一个相同的问题,它被标记为有用>200次,而它被接受的答案(Dir[“/path/to/search/*”]
)被标记为有用>300次。。。