我想获取特定类型文件夹中所有文件的内容,并将其内容添加到数组中。由于File.open
只接受字符串,我不知道如何做到这一点。我认为最接近的是:
Dir.glob(*).each do|file|
filearray = File.open(file).read
但除此之外,我不知道如何将输出转换为数组变量以供稍后的其他代码部分使用。
答案 0 :(得分:5)
你基本上拥有它,但是这样的东西呢?
filearray = Dir.glob('*').select { |f| File.file?(f) }.map { |f| File.read(f) }
select
位只是确保您只提取文件(而不是目录)。如果您有特定的文件扩展名,则可以将其添加到glob
调用中 - 例如,如果您要查找所有.rb文件,则可以使用'*.rb'
而不是{{ 1}}。
答案 1 :(得分:1)
s_folder_path = 'C:/Test'
a_files = []
Dir.foreach(s_folder_path).each do |file|
a_files << File.open("#{s_folder_path}/#{file}").read if file != "." && file != ".."
end
puts a_files.inspect