Ruby/Rubyの基礎知識

Rubyでファイルの読み書きを行う

Rubyを使ってファイルの内容を読み取って処理する方法、逆にファイルへデータを書き込む方法を説明します

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

はじめに

今回は初学者を対象に、Rubyでファイルを開いて読み込む/書き込む方法、ディレクトリの扱いなどを説明します。

open でファイルを開く

最もシンプルな使い方はKernel#openメソッドでファイルを開くことです。openはFileクラスのインスタンスを返します。

FileはIOクラスを祖先に持ち、ファイル操作は基本的にIOクラスのインスタンスメソッドを使って行います。またEnumerableモジュールもインクルードされているため、each, map, reduceなどが利用可能です。以下に実例を見ていきます。

行ごとの処理を行うにはIO#each_lineを使うのが簡単です(IO#eachも同じ機能を持つ別名メソッドです)。

openしたファイルは、必ずcloseする必要があります。

また、openにブロックを渡す方法もあります。こうすればファイルオブジェクトはブロック終了時にcloseされるため、close忘れがありません。

ファイルに書き込む

ファイルへの書き込みは、オープンしたFileインスタンスに対してIO#putsメソッドを使って行います。

エラーが発生してしまいました。「IOError: not opened for writing」と言われている通り、openするときに書き込み可能な形式で開いてやる必要があるのです。これを「モード」と言い、おおまかに以下のような種類があります(module function Kernel.#openより)。

  • r
    • ファイルを読み込みモードでオープンします。デフォルトはこのモードになっているため、先程は書き込みが失敗していました。
  • w
    • ファイルを書き込みモードでオープンします。オープン時にファイルがすでに存在していれば その内容を空にします。
  • a
    • ファイルを書き込みモードでオープンします。出力は常にファイルの末尾に追加されます。
  • r+
    • 読み書き両用モード。ファイルの読み書き位置は先頭にセットされます。
  • w+
    • 読み書き両用モード。ファイルの読み書き位置は先頭にセットされ、オープン時にファイルがすでに存在していればその内容を空にします。
  • a+
    • 読み書き両用モード。書き込みは常にファイル末尾に行われます。

それでは、先ほどのファイルを末尾に追加するa+モードで開いて、内容を追加してみます。

次のページではディレクトリを扱う方法や、その他のよく利用するメソッドなどを紹介します。

  • 1
  • 2
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます