libro
www.tuyano.com
初心者のためのRubyプログラミング入門

テキストファイルのアクセス (4/4)

作成:2013-03-11 08:04
更新:2013-03-11 08:04

■File.open/closeでファイルを処理する

ここまでは、File.readFile.foreachのように、Fileクラスにあるメソッド一発で処理をさせるようなやり方をしてきました。

しかし、もっと柔軟なファイル処理を行わせる場合、ファイルをオープンし、必要な処理をしていく丁寧な処理方法が用意されています。ファイルの書き出しに使ったopen/closeを利用したやり方です。


1. Fileを開く
まず、openでファイルを開き、Fileインスタンスを取得します。これは書き出し処理と同じですね。
変数 = File.open( ファイルパス , アクセス権 )


2. each_lineで読み込む
続いて、ファイル内のテキストを読み込み処理していきます。これにはいろいろとやり方がありますが、ここではeach_lineというものを使った方法を紹介しておきます。
《File》.each_line do | 変数 |
    ……変数を使った処理……
end
each_line doの後の| 変数 |に各行のテキストが読み込まれていきます。これを利用して行ごとに処理をしていきます。


3. closeでファイルを閉じる
最後にファイルを閉じ、リソースを開放して終了です。
《File》.close


each_lineは、こうして見ただけではFile.foreachを利用したやり方とあまり変わらないように見えるかもしれません。が、実はeach_lineには引数の指定があり、それを利用することで読み込み方を調整できるのです。

rs = 区切り文字  指定のキャラクタで文を区切って読み込ませます。
limit = バイト数  一度に読み込むテキストをバイト数で指定します。

これらを利用することで、更に細かなテキストの読み込み方ができるようになります。簡単な例を下にあげておきましょう。ここでは、半角スペースを区切り文字に指定してテキストを読み込んでいます。つまり、単語単位でテキストが読み込まれ処理できるわけです。

このようにeach_liineを使えば、File.foreachとはまた違ったテキストの処理ができるようになります。合わせて覚えておくとよいでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

file = File.open('sample.txt')
file.each_line(rs = ' ') do |line|
    puts line
end
file.close
puts('sample.txt を読み込みました。')

※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る