在Ruby on Rails中读取目录中的文件

30

我是Ruby on Rails的新手,我想从指定目录读取文件名。有人可以提供代码或其他链接吗?

谢谢


2
请不要自私,对人们在这里浪费的时间表示感激,至少接受一个有效的答案。如果人们看到你是那么自私,他们将不会再帮助你。 - Jorge Fuentes González
8个回答

33

我建议您使用Dir.entries("目标文件夹")

查看文档这里


25

如果您想获取特定文件夹下的所有文件并放进一个数组中:

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"]

10

如果你想要筛选出一个文件列表,你也可以使用Dir.glob

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

9
您基本上可以使用File.basename(file)来获取文件名。
Dir.glob("path").map{ |s| File.basename(s) }

5
使用Ruby on Rails时,应使用Rails.root.join,这样更清晰。然后你会得到一个包含文件路径的数组:files = Dir.glob(Rails.root.join('path', 'to', 'folder', '*'))

2
最初的回答:首先,您必须正确创建指向目标文件夹的路径。
例如,当您的目标文件夹是“app”文件夹中的“models”时。
target_folder_path = File.join(Rails.root, "/app/models")

最初的回答是:这将返回一个包含所有文件名的数组。
Dir.children(target_folder_path)

这段代码返回一个不包含“.”和“..”的数组。最初的回答。

1
要仅列出文件名,最值得推荐的解决方案是:
irb(main)> Dir.children(Rails.root.join('app', 'models'))
=> ["user.rb", "post.rb", "comment.rb"]

0
如果你想从Rails根目录找到相对路径,你可以直接使用Dir,比如:
Dir["app/javascript/content/**/*"]

会返回,例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接