Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何将目录的所有文件名读入数组?_Ruby - Fatal编程技术网

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次。。。