Rubyのフィアル入出力

2020-12-16 hit count image

Rubyでファイルの入出力を使う方法について説明します。

概要

このブログではRubyでファイルを使う方法について説明します。

ストリーム

Rubyの言語ではファイルとデータを送受信時ストリーム(stream)と言う概念を使います。Rubyではストリームを使ってデータを入出力をします。

次はRubyでファイルを読み書きの手順です。

  1. データを流すためのストリームを用意します。
  2. ファイルからプログラムへまたはプログラムからファイルへデータを流します。
  3. ストリームを閉じます。

ファイルは大きくテキストファイルとバイナリファイルがあります。これによってストリームも文字ストリームとバイトストリームがあります。

ストリーム説明
文字ストリーム16ビットユニコード文字データを扱います。
バイトストリーム8ビットデータを扱いします。

ストリームを扱う時はIOクラスを使うし、ファイルの入出力ではIOクラスのサブクラスであるFileクラスを使います。

クラス説明
IOクラスプログラムから外部とデータを送受信するための機能を提供
Fileクラスファイルの読み書き機能を提供

このブログではテキストだけ扱いします。

ファイル読み取り

ファイルを読み取りするため次の手順に従います。

  1. ファイルを開く

    ファイルを開くためopenメソッドまたはFile.openメソッドを使います。

     io = open(fileName, "r")
     io = File.open(fileName, "r")
    

    ファイルを開く時、モードを指定することができます。

    モード説明
    r読み取りモード
    w書き込みモード
    a追加書き込みモード
  2. データ読み取り

    次のようにreadメソッドを使ったら、データを全て読み取ることができます。

     io.read
    

    ファイルの容量が大きい場合、一回で読み取るとメモリの問題が発生する場合があります。ファイルの容量が大きい場合、次のようにgetsメソッドを使って、一行ずつ読み取ることができます。

     while data = io.gets
       puts data
     end
    
  3. ファイルを閉じる

    必要な全ての処理を実行したら、closeメソッドを使ってファイルを閉じます。

     io.close
    

ファイル書き込み

テキストをファイルへデータを書き込む場合、次のような手続きを従います。

  1. ファイルを開く

    テキストファイルへデータを書き込むため、wまたはaモードを使ってファイルを開きます。

     io = open(fileName, "w")
    
  2. データ書き込み

    次のようにwriteメソッドを使ってデータを書き込みます。

     io.write("Hello world")
    
  3. ファイルを閉じる

    ファイルへデータを全部か書き込んだら、次のようにファイルを閉じます。

     io.close
    

例題

次はファイル入出力へ関する例題です。

data = "Hello world"
io = open("example.txt", "w")
io.write(data)
io.close

io = open("example.txt")
io.each {|line|
  puts line
}
io.close

完了

これでRubyでファイルを読み込んだり書き込んだりする方法について見てみました。ファイルを扱う時一番大事なことはファイルを使ったら必ずcloseを使ってファイルを閉じることです。ファイルを閉じないと他のプロセスがファイルを読むことができなくって問題が発生します。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts