特定の種類のフォルダー内のすべてのファイルの内容を取得し、それらの内容を配列に追加したいと考えています。文字列のみを受け入れるので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'*.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