Ruby フォルダ内のファイルを全て表示する

Rubyで、フォルダ内のファイルを全て表示するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
Dir.foreach使用
Dir.foreachを使用すれば、フォルダ内のファイルを全て表示することが可能です。
コードと同じ階層にあるフォルダの内容

Dir.foreach使い方
Dir.foreach(".") do |i|
p i
end
# "."
# ".."
# "b.rb"
# "foo.txt"
# "hoge"
# "hoge.txt"
# "sample.rb"
カレントフォルダ「.」や親フォルダである「..」を表示しないようにする場合は、条件式をdo内に使用します。
Dir.foreach(".") do |i|
next if i == "." or i == ".."
p i
end
# "b.rb"
# "foo.txt"
# "hoge"
# "hoge.txt"
# "sample.rb"
each_childを使用しても「.」と「..」は除外してくれます。
Dir.each_child(".").each do |i|
p i
end
# "b.rb"
# "foo.txt"
# "hoge"
# "hoge.txt"
# "sample.rb"
Dir.open使用
Dir.openを使用して、取得することも可能です。
Dir.open(".").each do |i|
p i
end
# "."
# ".."
# "b.rb"
# "foo.txt"
# "hoge"
# "hoge.txt"
# "sample.rb"
Dir.glob使用
globで「ワイルドカード(*)」を使用して、取得することも可能です。
Dir.glob("*").each do |i|
p i
end
# "b.rb"
# "foo.txt"
# "hoge"
# "hoge.txt"
# "sample.rb"
パフォーマンスは、glob以外は、ほぼ同じです。
【参考】「.」と「..」を除外して取得したコードを10万回実行した結果
user system total real
#foreach 2.875000 14.234000 17.109000 ( 17.167680)
#each_child 2.406000 14.782000 17.188000 ( 17.214891)
#open 2.735000 14.328000 17.063000 ( 17.060199)
#glob 4.078000 16.609000 20.687000 ( 20.712945)
Dir.entries使用
Dir.entriesを使用すると、配列で取得することが可能です。
p Dir.entries(".")
# [".", "..", "b.rb", "foo.txt", "hoge", "hoge.txt", "sample.rb"]
Dir.children使用
Dir.childrenを使用すると、カレントフォルダ「.」や親フォルダである「..」を取得せずに配列化してくれます。
p Dir.children(".")
# ["b.rb", "foo.txt", "hoge", "hoge.txt", "sample.rb"]
-
前の記事
MySQL 割り算の余りを取得する 2021.12.15
-
次の記事
MySQL DB一覧を表示する 2021.12.15
コメントを書く