Rubyでファイルの書き込み・読み込みを行う方法

今回は Ruby のファイルの読み込みと書き込み処理の方法について説明します。Ruby でファイルを扱う場合には File クラスを使用します。

ファイルを開く

File を開くためには open メソッドを使用します。

第1引数にファイル名を指定します。第2引数にはファイルを開くときのモードを指定します。読み込みモードの一覧は以下の通りです。

r 読み込みモード
r+ 読み込み + 書き込みモード
w 新規作成・書き込みモード
w+ 新規作成・読み込み + 書き込みモード
a 追記書き込みモード
a+ 読み込み + 追記書き込みモード 

ファイルの書き込み

以下はファイルに文字列を書き込むサンプルプログラムです。

プログラムを実行後、ファイルを確認してみます。

まず、open メソッドでファイルを開きます。open の第1引数に sample.txt を指定し、第2引数には書き込みモードを示す "w" を指定します。このモードのとき、ファイルが存在しない場合は新規作成され、存在する場合は上書きされます。

そして、f.puts("Hello, World!") でファイルに書き込んでいます。

ファイルの末尾に書き込む

ファイルに追記する場合は open メソッドの第2引数に "a" モードで指定します。

文字列配列をファイルに書き込む

配列に格納されている文字列を1行ずつ書き込むサンプルプログラムです。

プログラムを実行後、ファイルを確認してみます。

上の例と同様にファイルを書き込みモードで開きます。 a.each の部分は配列 a から1つずつ要素を取り出し、仮にそれを s と名付けています。そして、 取り出した文字列を f.puts(s) でファイルに書き込んでいきます。

each 文についてはこちらを参考にしてください。

ファイルを読み込む

今回は以下のファイル(sample2.txt)を読み込んでみます。

以下はファイルを読み込むサンプルプログラムです。

実行結果

ファイルを読み込むときは  open の第2引数に "r" を指定します。そして、 read メソッドを使用してファイル全体を読み込んでいます。

1行ずつファイルを読み込む

以下は1行ずつファイルを読み込み、行番号をつけて表示するサンプルプログラムです。

実行結果

読み込みモードで開き、読み込んだファイルから each_line で1行ずつ文字列を読み込み処理を行っています。


イベント