Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyのシステム開発では、新規ファイルの作成や既存ファイルの読み込みといったファイル関連の処理は頻繁に利用されます。

本記事では、Rubyでのファイル操作の基本となるFile.openを利用したファイルの読み込み・書き込み処理についてご紹介していきます。

File.openメソッドとは


Fileクラスから提供されているopenメソッドで、Rubyでファイルを開いたり・作成したりする際に呼び出す処理です。

読み込みや書き込み時にもファイルを開く必要があるため、ファイル関連処理の起点とも言えます。

基本構文

File.openメソッドは下記のように記述します。

インスタンス = File.open(ファイルパス, 読み書きモード)

ファイルパス以外はオプションでの指定となります。

ポテパンダの一言メモ

第3引数として、ファイル作成時に権限を設定することも可能ですが、本記事内では基本的な内容に絞るため説明を割愛させて頂いています。

サンプル

同階層に格納された「sample.txt」というファイルを読み込みモードで開き、インスタンス「file」に格納したい場合には下記のように記述します。

file = File.open("sample.txt", "r")

読み書きモードについて

File.openメソッドを使用する際、第2引数に下記の6つのオプションを指定することが出来ます。

読み書きモードの指定はオプションとなっており、何も指定しなかった場合にはデフォルト値として「r」、つまり読み込みモードとなります。

読み書きモード一覧
  • r: 読み込み
  • r+: 読み書き 書き込み時はファイル文頭から上書き
  • w: 新規書き込み
  • w+: 読み書き 書き込み時は既存の内容を削除して新規作成
  • a: 追記書き込み
  • a+: 読み書き 書き込み時はファイル末尾に追記

File.openでファイルを新規作成したい場合には、「r」と「r+」の指定はエラーとなるため注意が必要です。

ファイルの読み込みを行う方法


ファイルの読み込み処理を行いたい場合には、読み書きモードの「r」「r+」「w+」「a+」が利用可能です。

基本構文

ファイルの読み込みにはreadメソッドを利用します。

インスタンス名 = File.open(ファイルパス, 読み書きモード)
インスタンス名.read
インスタンス名.close

処理成功サンプル

「sample.txt」ファイルを読み込みモードで開き、ファイル全体を読み込んでコンソールに出力するサンプルです。

file = File.open("sample.txt", "r")

puts(file.read)
file.close

実行結果

$ruby sample.rb
テスト
ポテパンダの一言メモ

sample.txtには「テスト」と入力し保存した状態でサンプルコードを実行しています。

処理失敗サンプル

では「w」や「a」を読み書きモードに指定してファイルを開いた場合にはどうなるのか検証してみましょう。

file = File.open("sample.txt", "w")

puts(file.read)
file.close

実行結果

$ruby sample.rb
Traceback (most recent call last):
	1: from sample.rb:3:in `'
sample.rb:3:in `read': not opened for reading (IOError)

読み取り用のモードでファイルが開かれていないということで、エラーが発生していることをご確認頂けます。

ファイルの書き込みを行う方法


ファイルの書き込みを行いたい場合には、「w」「w+」「r+」「a」「a+」が利用可能です。

「w+」と「a+」に関しては「w」と「a」に加えて読み込みも出来るというだけなので「w」「a」「r+」の3つに絞って解説していきます。

基本構文

ファイルの書き込みを行うにはwriteメソッドを利用します。

インスタンス名 = File.open(ファイルパス, 読み書きモード)
インスタンス名.write("書き込む値")
インスタンス名.close

ファイルの内容を新規で作成したい場合「w」モード

読み込みモードのサンプルで利用した「テスト」と記載された「sample.txt」ファイルに「w」モードで書き込み処理を実施してみたいと思います。

file = File.open("sample.txt", "w")

file.write("書き込み")
file.close

sample.txtのファイルを開いてみると下記のように内容が書き換わっています。

書き込み

ファイルに追記したい場合「a」モード

同じファイルに「a」モードで「追記しました」という文言を書き込んでみたいと思います。

file = File.open("sample.txt", "a")

file.write("追記しました")
file.close

ファイルを開いて中身を確認してみると指定した値で追記されていることがわかります。

書き込み追記しました

ファイルの先頭から上書きしたい場合「r+」モード

同様に「r+」モードで「上書き」という文言を書き込んでみたいと思います。

file = File.open("sample.txt", "r+")

file.write("上書き")
file.close

ファイルを開くと下記のような内容に変わっています。

上書きみ追記しました

このように「r+」の場合には、ファイル先頭から指定した値の分だけ上書きされ、残りの内容はそのまま維持される特徴があります。

putsメソッドを使用した書き込み

Rubyではファイルの書き込みを行う際、「puts」メソッドを利用することも出来ます。

「write」メソッドでは末尾に改行コードが設定されないのに対し、「puts」メソッドでは末尾に改行コードが付与される特徴があります。

file = File.open("sample.txt", "w")

file.puts("1行目")
file.puts("2行目")
file.puts("3行目")
file.close

実行結果

1行目
2行目
3行目

RubyのFile.openメソッドでブロック記述を利用する


ここまでで、基本的なFile.openメソッドの利用方法については確認出来ましたが、ブロック記述という方法を利用することも可能です。

ブロック記述の利点として、closeメソッドを呼び出さなくてもファイルを閉じる操作が実施されるため、実務ではブロック記述がよく利用されます。

基本構文

File.open(ファイルパス, 読み書きモード) do | インスタンス名 |
  ファイル操作処理
end

ブロックは引数のまとまりを表し、「do~end」の間に記述された処理内容が対象となります。

サンプル

例えば直前の「puts」メソッドを使用した書き込み処理をブロック記述に書き換えると下記のようになります。

File.open("sample.txt", "w") do | file |
  file.puts("1行目")
  file.puts("2行目")
  file.puts("3行目")
end

closeメソッドを記述していませんが、endを抜けた時点で自動的にファイルを閉じる処理が実行されます。

さいごに: File.openを利用してRubyでのファイル操作に挑戦してみよう


本記事では、Rubyでのファイル操作で利用されるFile.openメソッドの使い方についてご紹介してきました。

ファイルの読み込み・書き込み問わず、File.openからファイル操作は始まるため、必ず抑えておかなければいけない知識の1つです。

自分の実現したい処理に適した読み書きモードを選択し、適切なファイル操作が実現出来るように学習していきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。