低レベルインフラエンジニアの忘備録

Linux系の各種作業を自分用の忘備録として残しています

【Ruby】IO・File

このあたりはいろいろ使いそうなので。。。。

◆jleague.txt

鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

 

こちらのファイルを使います。

 

(1)IO#readを使うパターン

①ソース(file_read.rb)

File.open 'jleague.txt' do |file|
    puts file.read
end

 

②実行結果

# ruby file_read.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

ファイルの内容をすべて読み込んで一気に出力するパターンです。

あんまり実務では使わなさそう。。。。

 

 

(2)IO#getsを使うパターン

①ソース(file_gets.rb)

File.open 'jleague.txt' do |f|
    while line = f.gets
        puts line
    end
end

 

②実行結果

# ruby file_gets.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

こっちは1行ずつ読み込んで出力するパターンです。

こっちのほうが使いそうですね。

 

 

(3)IO#each_lineを使うパターン

①ソース(file_eatch_line.rb)

File.open 'jleague.txt' do |f|
    f.each_line do |line|
        puts line
    end
end

 

②実行結果

# ruby file_gets.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

IO#getsと同じ感じですね。

IO#getsとIO#each_lineだとどっちを使ったほうがいいのだろう??