我想获取特定类型文件夹中所有文件的内容并将它们的内容添加到数组中。由于File.open
只接受字符串,我不知道该怎么做。我认为最接近的是:
Dir.glob(*).each do|file|
filearray = File.open(file).read
但除此之外,我不知道如何将输出转换为数组变量以供以后代码的其他部分使用。
我想获取特定类型文件夹中所有文件的内容并将它们的内容添加到数组中。由于File.open
只接受字符串,我不知道该怎么做。我认为最接近的是:
Dir.glob(*).each do|file|
filearray = File.open(file).read
但除此之外,我不知道如何将输出转换为数组变量以供以后代码的其他部分使用。
你基本上拥有它,但是这样的东西呢?
filearray = Dir.glob('*').select { |f| File.file?(f) }.map { |f| File.read(f) }
该select
位只是确保您仅提取文件(而不是目录)。如果您有特定的文件扩展名,您也可以将其添加到glob
调用中 - 例如,如果您要查找所有 .rb 文件,则可以使用'*.rb'
而不是'*'
.
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