Rubyで学ぶ! dirクラスの使い方7選

Ruby初心者がdirクラスをマスターするためのガイドRuby
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Rubyの世界へようこそ!

この記事では、Rubyのdirクラスについて詳しく解説します。dirクラスを用いれば、ディレクトリの操作が容易になります。

ディレクトリを開く、ファイルをリストアップする、新しいディレクトリを作成するなど、ディレクトリに関する様々な操作をRubyから直接行うことが可能です。

そしてこの記事を最後まで読むことで、dirクラスの使い方を7つマスターすることができます。

●Rubyのdirクラスとは

Rubyには、ファイルやディレクトリを扱うための様々なクラスが用意されています。

その中でも、ディレクトリを扱うためのクラスとしてdirクラスが存在します。

このクラスはディレクトリに関する様々な操作を提供し、ファイルシステムの操作を容易にします。

●dirクラスのメソッド

dirクラスには多くのメソッドがありますが、ここではその中でもよく使う7つのメソッドについて詳しく見ていきましょう。

○Dir.open

Dir.openは指定したディレクトリを開きます。

開いたディレクトリは、ブロックが与えられている場合、そのブロックの中でのみ有効です。

ブロックの終了とともにディレクトリは自動的に閉じられます。

○Dir.glob

Dir.globは、指定したパターンに一致するパス名の配列を返します。

ワイルドカードなどを使って複数のファイルやディレクトリを一度に指定することが可能です。

○Dir.mkdir

Dir.mkdirは新しいディレクトリを作成します。

既に同名のディレクトリが存在する場合はエラーとなります。

○Dir.rmdir

Dir.rmdirはディレクトリを削除します。

対象のディレクトリが空でない場合や、対象のディレクトリが存在しない場合はエラーとなります。

○Dir.chdir

Dir.chdirはカレントディレクトリを変更します。

指定したディレクトリが存在しない場合はエラーとなります。

○Dir.entries

Dir.entriesは、指定したディレクトリ内の全てのエントリ(ファイル名やディレクトリ名)を配列として返します。

○Dir.exist?

Dir.exist?は指定したパスがディレクトリとして存在するかどうかを判定します。

ディレクトリが存在する場合はtrueを、存在しない場合はfalseを返します。

●各メソッドの詳細な使い方とサンプルコード

それでは、dirクラスの各メソッドの使い方とサンプルコードを一つ一つ見ていきましょう。

それぞれのメソッドについて、具体的な使い方とその結果を示します。

○Dir.openの使い方とサンプルコード

まずはDir.openの使い方から始めましょう。

Dir.openメソッドは指定したディレクトリを開きます。

ブロックが与えられている場合は、そのブロックの中だけでディレクトリは開き続けます。

# "sample"という名前のディレクトリを開く
Dir.open('sample') do |dir|
  # ディレクトリ内のエントリを出力する
  dir.each do |entry|
    puts entry
  end
end

このコードは”sample”というディレクトリを開き、その中の全てのエントリ(ファイルやサブディレクトリ)を出力します。

ブロックの終了とともにディレクトリは自動的に閉じられます。

○Dir.globの使い方とサンプルコード

次にDir.globの使い方です。

Dir.globは指定したパターンに一致するパス名の配列を返します。

# 現在のディレクトリに存在する全ての.rbファイルを取得する
rb_files = Dir.glob('*.rb')

# 取得した.rbファイルの一覧を出力する
rb_files.each do |file|
  puts file
end

このコードでは、現在のディレクトリに存在する全ての.rbファイルを取得し、その一覧を出力します。

Dir.globはワイルドカードを使用して複数のファイルを一度に指定することが可能です。

○Dir.mkdirの使い方とサンプルコード

次に、Dir.mkdirの使い方を見てみましょう。

Dir.mkdirメソッドは新しいディレクトリを作成します。

# "new_directory"という新しいディレクトリを作成する
Dir.mkdir('new_directory')

このコードは、”new_directory”という新しいディレクトリを作成します。もし既に同名のディレクトリが存在する場合はエラーとなります。

○Dir.rmdirの使い方とサンプルコード

次はDir.rmdirの使い方です。

Dir.rmdirは指定したディレクトリを削除します。

# "unneeded_directory"というディレクトリを削除する
Dir.rmdir('unneeded_directory')

このコードは、”unneeded_directory”というディレクトリを削除します。

このディレクトリが存在しない場合や、中にファイルやサブディレクトリが存在する場合はエラーとなります。

○Dir.chdirの使い方とサンプルコード

続いて、Dir.chdirの使い方を紹介します。

Dir.chdirは現在の作業ディレクトリを変更します。

# 作業ディレクトリを"work_directory"に変更する
Dir.chdir('work_directory')

# 現在の作業ディレクトリを出力する
puts Dir.pwd

このコードは作業ディレクトリを”work_directory”に変更し、その結果を出力します。

Dir.pwdメソッドは現在の作業ディレクトリを返すため、このコードの実行結果は”work_directory”となります。

○Dir.entriesの使い方とサンプルコード

Dir.entriesの使い方を見てみましょう。

Dir.entriesは指定したディレクトリに含まれる全てのエントリの配列を返します。

# "sample_directory"に含まれる全てのエントリを取得する
entries = Dir.entries('sample_directory')

# 取得したエントリの一覧を出力する
entries.each do |entry|
  puts entry
end

このコードは、”sample_directory”に含まれる全てのエントリを取得し、その一覧を出力します。

○Dir.exist?の使い方とサンプルコード

さて、次はDir.exist?メソッドの使い方を見ていきましょう。

このメソッドは、指定したパスのディレクトリが存在するかどうかを確認します。

# "check_directory"というディレクトリが存在するか確認する
if Dir.exist?('check_directory')
  puts 'ディレクトリは存在します'
else
  puts 'ディレクトリは存在しません'
end

上記のコードでは、”check_directory”という名前のディレクトリが存在するかどうかを確認します。

もしディレクトリが存在すれば「ディレクトリは存在します」と出力し、存在しなければ「ディレクトリは存在しません」と出力します。

Dir.exist?メソッドを使うことで、ディレクトリの存在確認を行い、その結果に基づいた処理を分岐させることができます。

●よくあるエラーとその対処法

Rubyでdirクラスを使う際には、いくつかの典型的なエラーに遭遇する可能性があります。

ここではそれらのエラーと、それぞれの対処法を解説します。

  1. ‘No such file or directory @ dir_initialize – (指定したディレクトリ名)’

このエラーは、指定したディレクトリが存在しない場合に発生します。

Dir.exist?メソッドを使用してディレクトリの存在を確認することで、このエラーを回避することができます。

  1. ‘Permission denied @ dir_s_mkdir – (指定したディレクトリ名)’

このエラーは、ディレクトリを作成する権限がない場合に発生します。

適切な権限を持つユーザーとして実行するか、mkdirではなくFileUtils.mkdir_pを使用することで、このエラーを回避することができます。

これらのエラーは初心者がよく遭遇するものですが、理解と対処を通じて、Rubyのディレクトリ操作の理解を深めることができます。

●応用例とサンプルコード

さて、これまでに学んだdirクラスのメソッドを組み合わせて、具体的な応用例を見てみましょう。

例えば、指定したディレクトリにある特定の種類のファイルを一覧表示するプログラムを作成することができます。

# "target_directory"にある全ての.txt

ファイルを一覧表示する
Dir.glob('target_directory/*.txt').each do |file|
  puts file
end

このコードは、”target_directory”内の全ての.txtファイルを一覧表示します。

Dir.globメソッドを使って特定のパターンに一致するファイルを探し、それらのファイル名を出力します。

これは、ファイル操作において非常に有用なパターンで、よく使用されます。

以上が、Rubyのdirクラスの使い方とその応用例になります。

これらのメソッドを理解し活用することで、Rubyによるディレクトリ操作をより簡単に、より効率的に行うことができます。

初心者の方も安心して取り組んでいただけるよう、具体的なサンプルコードとともに解説を行いました。

これらの情報が、皆さんのプログラミング学習に少しでも役立てば幸いです。

まとめ

この記事では、Rubyのdirクラスの使い方をステップバイステップで解説しました。

具体的なサンプルコードを交えながら、dirクラスの機能を最大限に引き出す方法を紹介しました。

これからRubyでプログラミングを始める初心者の方々にとって、このガイドがdirクラスの理解と使用の助けとなれば幸いです。