【Ruby】File.openを利用したファイルの読み込み・書き込み処理を理解しよう!
  • facebookページ
  • twitterページ
  • 2021.01.22

    【Ruby】File.openを利用したファイルの読み込み・書き込み処理を理解しよう!

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

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

    File.openメソッドとは


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

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

    基本構文

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

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

    ポテパンダの一言メモ

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

    サンプル

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

    読み書きモードについて

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

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

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

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

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


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

    基本構文

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

    処理成功サンプル

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

    実行結果

    ポテパンダの一言メモ

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

    処理失敗サンプル

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

    実行結果

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

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


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

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

    基本構文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    実行結果

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


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

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

    基本構文

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

    サンプル

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

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

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


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

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

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



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE