※こちらの記事は、プロスタ編集部が学習者の多いRubyの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。
参考サイト:【Ruby入門】ファイルの書き込みと読み込み
#【Ruby入門】ファイルの書き込みと読み込み
今回はファイルの書き込みと読み込みの方法をご紹介します。
目次
1 ファイルを開く
2 ファイルに書き込む
3 ファイルを読み込む
##ファイルを開く
Rubyでは、Fileクラスを使ってテキストファイルを読み込んだり、書き込んだりすることができます。そして、その前にまずファイルを開いてやる必要があります。ファイルを開く場合、以下のようなコードを書きます。
File.open("ファイル名","モード")
※File.openは、単にopenと書いてもかまいません。
ファイル名の部分には、開きたいファイルの名前を拡張子つきで書きます。もちろん、rbファイルと開きたいファイルが違うディレクトリにある場合は「ディレクトリ/ファイル名」のように、置いてあるディレクトリを / で区切って指定する必要があります。
また、モードというのは、以下のようなものです。
r : 読み取りモード。readのrと覚えればよいでしょう。
w : 新規作成書き込みモード。writeのwと覚えればよいでしょう。ファイルの中に書いてあるテキストを消して、すべて新しく書き換えます。
a : 追加書き込みモード。今までファイルの中にあったテキストは消さず、その続きを追加していく形でテキストを挿入します。appendのaと覚えればよいでしょう。
r+ : 両用モード
w+ : 新規作成読み書き両用モード
a+ : 追記書き込み読み込み両用モード
つまり、+がつくと両用モードとなります。モードはとくに何の指定もなければ、デフォルトのrが自動選択されます。
##ファイルに書き込む
では、Fileクラスを使って、テキストファイルを作ってみましょう。ファイルの書き込みを行う場合は、以下のようにコードを書きます。
File.open("ファイル名","モード") do |変数|
変数.puts("本文")
変数.puts("本文")
end
※本文は何行作っても構いません。
これを使って、text_write_test.txtというファイルをrbファイルと同じディレクトリに作成する場合、以下のようにコードを書きます。
File.open("text_write_test.txt","w") do |text|
text.puts("Hello!!")
text.puts("How are you?")
end
このコードを書いたrbファイルを実行すると、同じディレクトリに「text_write_test.txt」というファイルが作成され、その中身には以下のような文章が書いてあります。
Hello!!
How are you?
##ファイルを読み込む
rbファイルを実行したときにテキストファイルを読み込んで、書いてあるテキストを表示する場合、以下のようにコードを書きます。
file = File.open("ファイル名","モード")
file.each do |変数|
puts 変数
end
file.close
指定したファイルから読み込んだ文字列を、eachメソッドを使って変数の中にいれてから表示するという仕組みになっています。
text_open_test.txtというファイルを読み込んで表示させるというプログラムを書く場合、以下のように書きます。あらかじめtext_open_test.txtというファイルを作り、中身に何か文字列を書いておきましょう。
file = File.open("text_open_test.txt","r")
file.each do |text|
puts text
end
file.close
このプログラムをテキストファイルと同じディレクトリに保存して実行すると、text_open_test.txtに書かれている文字列が表示されます。
ここでは表示させるだけでしたが、Fileクラスはputsで表示させる意外にも、ファイルについての情報を取得したりなど、さまざまな使い道があります。