Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Dir::foreach()メソッドの使い方

foreachメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Dir.foreachメソッドは、指定されたディレクトリ内の各エントリ(ファイルやサブディレクトリ)の名前を順に処理するメソッドです。このメソッドは、処理対象となるディレクトリのパスを引数として受け取ります。

ブロックを渡して使用する場合、ディレクトリ内の各エントリ名が文字列として一つずつブロックに渡され、ブロック内の処理が実行されます。これにより、特定のディレクトリにあるファイルやフォルダの名前を一覧表示したり、それぞれのエントリに対して条件に応じた操作を行ったりすることが可能です。ファイル操作の自動化に役立ちます。

返されるエントリ名には、現在のディレクトリを示す「.」と親ディレクトリを示す「..」も含まれるため、処理の際にはこの点に留意が必要です。

ブロックが与えられない場合は、Dir.foreachメソッドはEnumeratorオブジェクトを返します。このオブジェクトを利用することで、必要に応じて後から繰り返し処理を実行したり、mapselectといった他のイテレータメソッドと組み合わせて、より柔軟なデータ加工を行うことができます。これは、ディレクトリの内容を効率的に扱う基本的な機能です。

構文(syntax)

1Dir.foreach("path/to/directory") do |entry_name|
2  # ここで entry_name を利用する処理を記述
3  # 例: puts entry_name
4end

引数(parameters)

dirname, encoding: nil

  • dirname: 処理対象のディレクトリパスを指定する文字列
  • encoding: nil: ディレクトリ内のファイル名で使用されるエンコーディングを指定する文字列 (nil の場合はシステムのデフォルトエンコーディングが使用されます)

戻り値(return)

nilまたはEnumerator

Dir.foreach は、指定されたディレクトリ内の各ファイルやサブディレクトリ名をブロックで処理します。ブロックが渡されなかった場合は、各エントリを順番に返す Enumerator オブジェクトを返します。

関連コンテンツ