【Ruby】File(ファイル)の読み込み・書き込み方法を理解しよう!
  • facebookページ
  • twitterページ
  • 2021.01.22

    【Ruby】File(ファイル)の読み込み・書き込み方法を理解しよう!

    プログラム開発で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」を利用することが可能です。

    基本構文

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

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

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

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

    実行結果

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

    ポテパンダの一言メモ

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

    File(ファイル)を開く


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

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

    基本構文

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

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

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

    ポテパンダの一言メモ

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

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


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

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

    基本構文

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

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

    書き込みモードサンプル

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

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

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

    追記モードサンプル

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

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

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

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

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

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

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

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


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

    基本構文

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

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

    ポテパンダの一言メモ

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

    サンプル

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

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

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

    出力結果

    ポテパンダの一言メモ

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

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

    実行結果

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

    File(ファイル)を閉じる


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

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

    基本構文

    サンプル

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

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


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

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

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



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE