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

プログラム開発でFileの読み込み・書き込み処理は、どんな言語でも頻出処理の1つとして挙げられます。

本記事では、RubyでのFile読み書きの方法について、初心者の方にも理解してもらいやすいようサンプルコードを掲載しながらご紹介していきます。

Rubyではファイル操作にFileクラスを利用する


Rubyでファイル操作を行う際、Fileクラスを利用して実装を進めることになります。

ファイル関連でどういった処理がよく利用されるのか、まずは洗い出してみましょう。

ファイル関連の頻出頻出処理
  • ファイル作成: new, open
  • ファイルを開く: open
  • ファイルの読み込み: read
  • ファイルの書き込み: puts, write
  • ファイルを閉じる: close

読み書きモード

後ほどご紹介しますがファイルを開く際、読み書きモードを指定する下記のオプションを設定することが可能です。

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

File(ファイル)の作成


ファイルを新規で作成する場合、「new」と「open」2つのメソッドが利用出来ます。

読み書きモードのオプションには「w」と「a」を利用することが可能です。

基本構文

記述方法に関しては下記の通りです。

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

第1引数にファイルパス、第2引数に読み書きモードを指定します。

新規ファイル作成サンプル

ではまず「new」「open」それぞれに「w」「a」のモードを指定して実行してみましょう。

file1 = File.new('sample1.txt', 'w')
file2 = File.open('sample2.txt', 'w')
file3 = File.new('sample3.txt', 'a')
file4 = File.open('sample4.txt', 'a')

実行結果

$ls
sample.rb
$ruby sample.rb
$ls
sample.rb	sample1.txt	sample2.txt	sample3.txt	sample4.txt

指定したファイルがそれぞれ作成されています。

ポテパンダの一言メモ

第2引数に「w+」「a+」を指定した場合も同様の結果となります。
「r」や「r+」を指定した場合には、エラーとなることも合わせて覚えておきましょう。

File(ファイル)を開く


ファイルを開く場合には、「open」メソッドが利用出来ます。

読み書きモードは上述した6つ全てのオプションが利用可能です。

基本構文

ファイル作成時と同じ記述方法でファイルを開くことが可能です。

パスにファイルが存在する場合には既存ファイルを開き、パスにファイルが存在しない場合には新規作成となります。

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

実際のサンプルは読み込み・書き込み処理と一緒に確認していきます。

ポテパンダの一言メモ

newメソッドでも基本的に同じようにファイルを開くことが出来ますが、名前の通りopenメソッドを使う方法が一般的です。
また、openメソッドではブロック処理を記述出来る点でも少し異なります。

File(ファイル)の書き込み


ファイルを作成・開いた状態で書き込み処理を行っていきましょう。

書き込み処理には、「puts」と「write」メソッドが利用出来ます。

基本構文

それぞれのメソッドで書き込み処理を行うには下記のように記述します。

インスタンス名.puts(書き込む内容)
インスタンス名.write(書き込む内容)

「puts」と「write」の違いは、「puts」を利用した場合には末尾が改行されるのに対し、「write」では改行されません。

書き込みモードサンプル

では実際に書き込み処理のサンプルで確認していきたいと思います。

file1 = File.open('sample1.txt', 'w')

file1.puts("putsメソッドで出力1")
file1.puts("putsメソッドで出力2")
file1.write("writeメソッドで出力1")
file1.write("writeメソッドで出力2")

ファイルを開いて確認してみると下記の内容で作成されています。

putsメソッドで出力1
putsメソッドで出力2
writeメソッドで出力1writeメソッドで出力2

putsメソッドで書き込みを行った場合は末尾が改行されており、writeメソッドでは改行されていないことをご確認頂けます。

追記モードサンプル

次は上記サンプルで作成したファイルに追記モードで書き込み処理を実施してみたいと思います。

file1 = File.open('sample1.txt', 'a')

file1.puts("putsメソッドで追記")
file1.write("writeメソッドで追記")

ファイルを開いてみると下記のように追記されています。

putsメソッドで出力1
putsメソッドで出力2
writeメソッドで出力1writeメソッドで出力2putsメソッドで追記
writeメソッドで追記

前回のサンプルで最後に書き込み処理を実施したのがwriteメソッドだったので、今回putsメソッドで書き込みをした1行目は改行されずに追記されています。

ファイル文頭から上書きするサンプル

もう1つの書き込みオプションである「r+」に関しても、サンプルファイルに上書きして動作確認しておきましょう。

file1 = File.open('sample1.txt', 'r+')

file1.puts("putsメソッドで上書き")
file1.write("writeメソッドで上書き")

ファイルを開いてみると下記の結果となります。

putsメソッドで上書き
writeメソッドで上書きeメソッドで出力1writeメソッドで出力2putsメソッドで追記
writeメソッドで追記

注意してもらいたいのは「r+」の場合、ファイル先頭に「追記」するのではなく「上書き」するという処理の違いです。

File(ファイル)の読み込み


開いたファイルを読み込むためには「read」が利用出来ます。

基本構文

Fileクラスのインスタンスにreadメソッドを指定することでファイルの内容を全て読み込むことが可能です。

また、引数に数値を入力することでバイト数を指定して読み込むことも出来ます。

インスタンス名.read(バイト数)
ポテパンダの一言メモ

バイト数の指定はオプションです。

サンプル

バイト数の指定有りと指定なしでファイルを読み込み、コンソールに出力するサンプルです。

readメソッドでファイル全体を読み込みコンソール出力するサンプル

まず「sample1.txt」のファイル全体を読み込んでみます。

file1 = File.open('sample1.txt', 'r')

puts(file1.read)

出力結果

$ruby sample.rb
1行目
2行目
3行目3行目の続き
4行目
5行目
ポテパンダの一言メモ

ファイルを開く際、読み書きモードで「w」や「a」を指定している場合にはreadメソッドがエラーとなってしまいますのでご注意ください。

readメソッドに読み込むバイト数を指定するサンプル

file1 = File.open('sample1.txt', 'r')

puts(file1.read(20))

実行結果

$ruby sample.rb
1行目
2行目
3行

このようにファイルの量が膨大な場合など、指定したデータ分だけファイルを読み込むことも可能です。

File(ファイル)を閉じる


開いたファイルは閉じる際には「close」メソッドが利用出来ます。

ここまでのサンプルではあえてcloseメソッドを記述してきませんでしたが、基本的にファイルを開く・閉じるの処理はセットで利用するものと覚えておきましょう。

基本構文

インスタンス名.close

サンプル

ファイルを新規で作成し、1行だけ入力しファイルを閉じるというシンプルな処理です。

file1 = File.new('sample1.txt', 'w')

file1.write('test')

file1.close

さいごに: RubyのFile(ファイル)操作は必ず抑えておくべき頻出処理


本記事では、Rubyのファイル操作の方法について最低限押さえておきたい基本の内容をご紹介してきました。

Fileクラスには今回ご紹介した以外にも様々なメソッドが用意されており、実務ではより複雑なコードが必要になるケースも少なくありません。

まずは基本をしっかりと理解した上で、少しずつ応用的に使いこなせるよう学習していきましょう。

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

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

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

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

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

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

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

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

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

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

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