0

特定の種類のフォルダー内のすべてのファイルの内容を取得し、それらの内容を配列に追加したいと考えています。文字列のみを受け入れるのでFile.open、これを行う方法がわかりません。私が考え出した最も近いものは、次のようなものです。

Dir.glob(*).each do|file|
  filearray = File.open(file).read

しかし、それを超えて、後でコードの他の部分で使用するために出力を配列変数に取得する方法がわかりません。

4

2 に答える 2

5

あなたは基本的にそれを持っていますが、代わりにこのようなものはどうですか?

filearray = Dir.glob('*').select { |f| File.file?(f) }.map { |f| File.read(f) }

このselectビットは、(ディレクトリではなく) ファイルのみをプルしていることを確認するだけです。特定のファイル拡張子を念頭に置いている場合は、それをglob呼び出しに追加することもできます。たとえば、すべての .rb ファイルを探している場合は、.rb'*.rb'の代わりに使用できます'*'

于 2013-08-08T18:36:36.000 に答える
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
于 2013-08-08T18:29:55.343 に答える