在rails上的ruby上读取目录中的文件

时间:2011-06-06 15:52:12

标签: ruby-on-rails filenames

我是ruby on rails的新手,我想从指定的目录中读取文件名。任何人都可以建议代码或任何其他链接?

由于

8 个答案:

答案 0 :(得分:26)

我建议您使用Dir.entries("target_dir")

查看文档here

答案 1 :(得分:17)

如果要将所有文件放在数组中的特定文件夹下:

files = Dir.glob("#{Rails.root}/private/**/*")

#=> ["/home/demo/private/sample_test.ods", "/home/demo/private/sample_test_two.ods", "/home/demo/private/sample_test_three.ods", "/home/demo/private/sample_test_one.ods"]

答案 2 :(得分:9)

如果您想要提取已过滤的文件列表,还可以使用Dir.glob

Dir.glob("*.rb")
# => ["application.rb", "environment.rb"]

答案 3 :(得分:2)

您基本上可以使用File.basename(file)来获取文件名

Dir.glob("path").map{ |s| File.basename(s) }

答案 4 :(得分:1)

要仅列出文件名,最推荐的解决方案是:

irb(main)> Dir.children(Rails.root.join('app', 'models'))
=> ["user.rb", "post.rb", "comment.rb"]

答案 5 :(得分:0)

使用Rails,您应该使用更干净的Rails.root.join

files = Dir.glob(Rails.root.join(‘path’, ‘to’, ‘folder’))

然后您将获得一个包含文件路径的数组

答案 6 :(得分:0)

首先,您必须正确创建目标文件夹的路径

例如,当目标文件夹为“ app”文件夹中的“ models”时

target_folder_path = File.join(Rails.root, "/app/models")

然后返回包含所有文件名的数组

Dir.children(target_folder_path)
  

此代码还返回不包含“。”和“ ..”的数组。

答案 7 :(得分:0)

如果您要从Rails根文件夹中查找相对路径,则只需使用Dir,例如:

Dir["app/javascript/content/**/*"]

将返回,例如:

["app/javascript/content/Rails Models.md", "app/javascript/content/Rails Routing.md"]