概要
このブログではRubyでファイルを使う方法について説明します。
ストリーム
Rubyの言語ではファイルとデータを送受信時ストリーム(stream)と言う概念を使います。Rubyではストリームを使ってデータを入出力をします。
次はRubyでファイルを読み書きの手順です。
- データを流すためのストリームを用意します。
- ファイルからプログラムへまたはプログラムからファイルへデータを流します。
- ストリームを閉じます。
ファイルは大きくテキストファイルとバイナリファイルがあります。これによってストリームも文字ストリームとバイトストリームがあります。
ストリーム | 説明 |
---|---|
文字ストリーム | 16ビットユニコード文字データを扱います。 |
バイトストリーム | 8ビットデータを扱いします。 |
ストリームを扱う時はIO
クラスを使うし、ファイルの入出力ではIOクラスのサブクラスであるFile
クラスを使います。
クラス | 説明 |
---|---|
IOクラス | プログラムから外部とデータを送受信するための機能を提供 |
Fileクラス | ファイルの読み書き機能を提供 |
このブログではテキストだけ扱いします。
ファイル読み取り
ファイルを読み取りするため次の手順に従います。
ファイルを開く
ファイルを開くため
open
メソッドまたはFile.open
メソッドを使います。io = open(fileName, "r") io = File.open(fileName, "r")
ファイルを開く時、モードを指定することができます。
モード 説明 r 読み取りモード w 書き込みモード a 追加書き込みモード データ読み取り
次のように
read
メソッドを使ったら、データを全て読み取ることができます。io.read
ファイルの容量が大きい場合、一回で読み取るとメモリの問題が発生する場合があります。ファイルの容量が大きい場合、次のように
gets
メソッドを使って、一行ずつ読み取ることができます。while data = io.gets puts data end
ファイルを閉じる
必要な全ての処理を実行したら、
close
メソッドを使ってファイルを閉じます。io.close
ファイル書き込み
テキストをファイルへデータを書き込む場合、次のような手続きを従います。
ファイルを開く
テキストファイルへデータを書き込むため、
w
またはa
モードを使ってファイルを開きます。io = open(fileName, "w")
データ書き込み
次のように
write
メソッドを使ってデータを書き込みます。io.write("Hello world")
ファイルを閉じる
ファイルへデータを全部か書き込んだら、次のようにファイルを閉じます。
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
を使ってファイルを閉じることです。ファイルを閉じないと他のプロセスがファイルを読むことができなくって問題が発生します。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。